Python UDP实例

作者: 我爱学python | 来源:发表于2019-06-19 16:28 被阅读12次

UDP通信过程

udp 不需要经过3次握手和4次挥手,不需要提前建立连接,直接发数据就行。

server端

client端

输出结果


粘包分析

第一种:

server

client

服务端结果:没有产生粘包

第二种:

 输出结果


TCP VS UDP

tcp基于链接通信

基于链接,则需要listen(backlog),指定连接池的大小

基于链接,必须先运行的服务端,然后客户端发起链接请求

对于mac系统:如果一端断开了链接,那另外一端的链接也跟着完蛋recv将不会阻塞,收到的是空(解决方法是:服务端在收消息后加上if判断,空消息就break掉通信循环)

对于windows/linux系统:如果一端断开了链接,那另外一端的链接也跟着完蛋recv将不会阻塞,收到的是空(解决方法是:服务端通信循环内加异常处理,捕捉到异常后就break掉通讯循环)

udp无链接

无链接,因而无需listen(backlog),更加没有什么连接池之说了

无链接,udp的sendinto不用管是否有一个正在运行的服务端,可以己端一个劲的发消息,只不过数据丢失

recvfrom收的数据小于sendinto发送的数据时,在mac和linux系统上数据直接丢失,在windows系统上发送的比接收的大直接报错

只有sendinto发送数据没有recvfrom收数据,数据丢失

相关文章

网友评论

    本文标题:Python UDP实例

    本文链接:https://www.haomeiwen.com/subject/wlbkqctx.html