Python通过UDP传输超过64k的信息!

Python通过UDP传输超过64k的信息!

在UDP中,单个数据包的最大尺寸通常受到网络层的限制,这通常被称为最大传输单元(MTU),在以太网环境中,标准的MTU大小通常为1500字节,下面是一个Python示例,展示了如何通过UDP发送和接收超过64KB的数据,需要的朋友可以参考下

在UDP中,单个数据包的最大尺寸通常受到网络层的限制,这通常被称为最大传输单元(MTU)。在以太网环境中,标准的MTU大小通常为1500字节。尽管有些网络环境可能支持更大的数据包,但是UDP数据包的理论最大限制是65535字节(64KB),这是由于UDP头部的16位长度字段决定的。

然而,如果你需要发送超过这个限制的数据,你必须将数据分割成多个较小的数据包,并在接收端重新组装它们。下面是一个Python示例,展示了如何通过UDP发送和接收超过64KB的数据。

服务器端(接收端)代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import socket 
def receive_large_data(sock, expected_size): 
data = b'' 
while len(data) < expected_size: 
remaining = expected_size - len(data) 
packet = sock.recv(min(remaining, 4096))  # 使用较小的缓冲区大小以模拟实际情况 
if not packet: 
raise Exception("Connection closed by remote host"
data += packet 
return data 
def start_server(): 
server_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
server_sock.bind(('localhost', 12345)) 
while True
data, addr = server_sock.recvfrom(1024# 接收数据包,包含数据大小和实际数据的第一部分 
total_size = int(data.decode()) 
print(f"Expecting {total_size} bytes of data from {addr}"
large_data = receive_large_data(server_sock, total_size) 
print(f"Received {len(large_data)} bytes of data from {addr}"
# 处理数据... 
# 例如,可以将其写入文件或进行其他处理 
if __name__ == "__main__"
start_server()

客户端(发送端)代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import socket 
def send_large_data(sock, data): 
# 首先发送数据的大小,以便服务器知道要接收多少数据 
sock.sendto(str(len(data)).encode(), ('localhost', 12345)) 
# 然后将数据分成小块并发送 
chunk_size = 4096  # 可以根据需要调整这个大小 
for i in range(0, len(data), chunk_size): 
sock.sendto(data[i:i+chunk_size], ('localhost', 12345)) 
def start_client(): 
client_sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 
# 创建一个大于64KB的数据包作为示例 
large_data = b'x' * 70000  # 70,000 字节的数据 
send_large_data(client_sock, large_data) 
if __name__ == "__main__"
start_client()

注意

  • 这个示例仅用于教学目的,并没有处理所有可能的错误情况。在生产环境中使用时,请确保添加适当的错误处理和重试逻辑。
  • 这个示例使用了本地回环地址(localhost)和端口号12345。在实际应用中,请根据需要修改这些值。
  • 在实际应用中,可能还需要考虑数据的加密、压缩和校验等问题,以确保数据的完整性和安全性。

 

 

学习资料见知识星球。

以上就是今天要分享的技巧,你学会了吗?若有什么问题,欢迎在下方留言。

快来试试吧,小琥 my21ke007。获取 1000个免费 Excel模板福利​​​​!

更多技巧, www.excelbook.cn

欢迎 加入 零售创新 知识星球,知识星球主要以数据分析、报告分享、数据工具讨论为主;

2022021703525891-68

你将获得:

1、价值上万元的专业的PPT报告模板。

2、专业案例分析和解读笔记。

3、实用的Excel、Word、PPT技巧。

4、VIP讨论群,共享资源。

5、优惠的会员商品。

6、一次付费只需99元,即可下载本站文章涉及的文件和软件。

文章版权声明 1、本网站名称:Excelbook
2、本站永久网址:http://www.excelbook.cn
3、本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长王小琥进行删除处理。
4、本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
5、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报。
6、本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。

THE END
分享
二维码
< <上一篇
下一篇>>