UDP

概念和介绍

UDP --- 用户数据报协议,是一个无连接的简单的面向数据报的运输层协议。

UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并 不能保证它们能到达目的地。

UDP是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整 的源地址或目的地址,它在网络上以任何可能的路径传往目的地,因此能否 到达目的地,到达目的地的时间、次序以及内容的正确性都是不能被保证的

UDP适用于语音广播、视频会议等其他的数据业务

UDP通信过程:

UDP通信比较简单

先写一个UDP服务器,一般步骤如下:

1、首先是要创建一个socket套接字:socket()

2、服务器一般是需要一个固定的IP地址和固定端口号,服务器就要绑定这个IP地址和端口号:bind()

3、只有服务器和客户端绑定相同的IP地址,服务器和客户端才可以互相接收数据和发送数据,常理来想,服务器是一只被开启的,也是一直接受数据,所以在接受数据的过程中,我们需要无限循环:recv()

4、如果我们要发送数据给客户端,客户端也需要绑定上面的地址,然后需要调用相应的函数sendto()

importsocket#UDP#创建一个服务器socket套接字

server_socket =socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#服务器的IP地址和端口号

address = ("127.0.0.1", 9999)#服务器绑定地址

server_socket.bind(address)

data= server_socket.recv(2048).decode("UTF-8")#数据处理,这里打印出来端

print("服务器接受的数据:", data) # 服务器接受的数据:我是一个客户端

若想服务器接受数据,就要写UDP客户端程序了

importsocket#客户端需要创建一个套接字

client_socket =socket.socket(socket.AF_INET, socket.SOCK_DGRAM)#客户端需要连接服务器,必须先知道服务器的IP地址和端口号

address = ("127.0.0.1", 9999)#连接服务器

client_socket.connect(address)#这个数据是将要发送的数据

data = "我是一个客户端"client_socket.sendto(data.encode("UTF-8"), address)

UDP总结

1. udp是TCP/IP协议族中的一种协议能够完成不同机器上的程序间的数据通 信

2. udp服务器、客户端

udp的服务器和客户端的区分:往往是通过请求服务和提供服务来进行区分

请求服务的一方称为:客户端

提供服务的一方称为:服务器

3. udp绑定问题

一般情况下,服务器端,需要绑定端口,目的是为了让其他的客户端能够正确发送 到此进程

客户端,一般不需要绑定,而是让操作系统随机分配,这样就不会因为需要绑定的 端口被占用而导致程序无法运行的情

python高级网络编程_python高级编程——网络编程(二)相关推荐

  1. python socket编程_Python学习记录-socket编程

    1. OSI七层模型详解 2. Python socket 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答 ...

  2. python fortran混合编程_python fortran c 混合编程

    背景 因为编程需要使用python和fortran(或者c,c++)混合编程,所以进行了一些资料查询和实验.首先尝试了f2py,但是这个项目已经很久没有更新,为了以后兼容性考虑(后期可能会使用到c++ ...

  3. python高级猜数字_python高级猜数字

    安装python之后,我们就可以使用python自带的开发集成环境做一详情>> pycharm专门针对用户打造的一种可以进行编辑的工具,它的功能设置比较强大,而且具有跨平台的使用特性,能方 ...

  4. python 栈实现 加减乘除_Python自学笔记,编程中简单的加减乘除

    日常生活中,我们都会有过很多的加减乘数的基本运算.今天我们来看看Python这么编程语言,是怎么进行简单的基本运算的.废话不多说,我们开始吧开发工具:IDLE (Python 3.7 64-bit)这 ...

  5. python高级网络编程_Python高级网络编程系列之基础篇

    一.Socket简介 1.不同电脑上的进程如何通信? 进程间通信的首要问题是如何找到目标进程,也就是操作系统是如何唯一标识一个进程的! 在一台电脑上是只通过进程号PID,但在网络中是行不通的,因为每台 ...

  6. python高级属性 用法 编程_python高级编程之面向对象高级编程

    1 面向对象编程 面向对象这节比较简单,就稍微总结几个特殊的点. 特殊方法__init__前后分别有两个下划线,__init__方法的第一个参数永远是self,表示创建的实例本身,因此,在__init ...

  7. python高级数据筛选_python高级编程,列表字典集合相关的数据筛选

    每天坚持学习一点,进行数据复盘,学习就是不一样 python高级编程,列表字典集合相关的数据筛选 #先看看第一个列表筛选 2017 9 16 高效python编程的一个案例:from random i ...

  8. 怎样学好python安全编程_Python高级安全编程 - 安全牛课堂 - 领先的信息安全在线教育平台

    { "i18nChapterName": "章", "i18nUnitName": "节", "i18nLes ...

  9. python套接字编程_Python套接字编程(1)——socket模块与套接字编程

    在Python网络编程系列,我们主要学习以下内容: 5. 常见的Python异步编程框架 6. 协程在Python网络编程中的使用 本文介绍Python下的基本套接字编程,主要基于 socket 模块 ...

最新文章

  1. linux 进程的作用,linux的几个进程的作用
  2. 零基础学python爬虫-零基础学习python_爬虫(53课)
  3. java类多例_Java多例设计模式实例详解
  4. threadlocal使用_多方位点评ThreadLocal,细看各大开源软件实现
  5. SSH三大框架注解整合(二)
  6. python之函数用法islower()
  7. 一卡通vip充值消费线上oracle库服务器故障排查过程
  8. 为什么 ++[[]][+[]]+[+[]] = 10 ?
  9. [学习笔记]后缀平衡树
  10. LeetCode 2. Add Two Numbers (两数相加)
  11. android 城市列表 横屏,Android Launcher3去掉所有应用列表,横屏时左右两侧的留空...
  12. 激光雷达障碍物检测:点云聚类算法
  13. ORACLE通过身份证号计算年龄
  14. win7计算机丢失msvcp110dll,win7系统出现msvcr110.dll丢失的详细解决步骤
  15. juniper防火墙开启NAT功能
  16. 必看!2021年云计算行业五大趋势,云南昆明企业小型云计算平台搭建及解决方案
  17. 【Matlab】一、解常微分方程ODE
  18. NYOJ_170聪明的kk
  19. 【ThreeJS基础教程-材质纹理篇】3.1 纹理知识进阶
  20. Python——输出大写英文字母

热门文章

  1. 机器学习与高维信息检索 - Note 4 - 主成分分析及其现代解释(Principal Component Analysis, PCA)及相关实例
  2. 【Vue版】实现拖拽、排序效果(注意,这个方法在chrome谷歌浏览器上面不适用,dragend会情不自禁触发drag事件先执行,有点像浏览器的一个bug)
  3. Go的日志模块glog调研笔记
  4. leetcode-440 字典序的第K小数字
  5. C++的STL队列实现栈
  6. C# 篇基础知识11——泛型和集合
  7. GridView单元格取值显示为nbsp;
  8. Python 基础 - Day 2 Assignment - ShoppingCart 购物车程序
  9. IOS的钥匙串,确保本地隐私数据的安全
  10. 控件的实际大小与呈现大小