Python--网络编程-----基于UDP协议的套接字不会发生粘包
Posted xudachen
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python--网络编程-----基于UDP协议的套接字不会发生粘包相关的知识,希望对你有一定的参考价值。
服务端:
1 from socket import * 2 3 server = socket(AF_INET, SOCK_DGRAM) 4 server.bind((‘127.0.0.1‘, 8080)) 5 6 res1 = server.recvfrom(1024) 7 print(‘第一次:‘, res1) 8 9 res2 = server.recvfrom(1024) 10 print(‘第一次:‘, res2) 11 12 server.close()
客户端:
1 from socket import * 2 3 client = socket(AF_INET, SOCK_DGRAM) 4 5 client.sendto(b‘hello‘, (‘127.0.0.1‘, 8080)) 6 client.sendto(b‘world‘, (‘127.0.0.1‘, 8080)) 7 8 client.close()
先运行服务端,在运行客户端,并没有发生粘包现象,
服务端运行结果为:
1 第一次: (b‘hello‘, (‘127.0.0.1‘, 61924))
由于windows系统原因,第二次并没有打印出来,
把服务端第一次recv的字节数修改为1,只能收到1个字节h,其余丢失,
第二收到的为world,windows系统测试出现问题:
1 Traceback (most recent call last): 2 File "C:/Users/xudachen/PycharmProjects/Python全栈开发/第三模块/网络编程/基于udp协议不会发生粘包/服务端.py", line 6, in <module> 3 res1 = server.recvfrom(1) 4 OSError: [WinError 10040] 一个在数据报套接字上发送的消息大于内部消息缓冲区或其他一些网络限制,或该用户用于接收数据报的缓冲区比数据报小。
linux系统不会出现这种问题,
以上是关于Python--网络编程-----基于UDP协议的套接字不会发生粘包的主要内容,如果未能解决你的问题,请参考以下文章