【发布时间】:2017-02-23 05:41:20
【问题描述】:
如何在 Python (Python 2) 中找到 UDP 有效负载的最大长度,最好与平台无关?
具体来说,我想避免[Errno 90] Message too long AKA errno.EMSGSIZE。
背景
- UDP 数据包格式允许的最大值is 65536)。
IPv4数据包格式seems to be 65507所允许的最大值。
我没有问什么
- What is the largest Safe UDP Packet Size on the Internet?
- 一个 IPv4 数据报可以容纳的最大 UDP 负载是多少?
- 一个以太网帧可以容纳的最大 UDP 负载是多少?
演示代码
查看操作中的错误:
import socket
msg_len = 65537 # Not even possible!
ip_address = "127.0.0.1"
port = 5005
msg = "A" * msg_len
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(msg, (ip_address, port))
【问题讨论】:
-
我认为没有一种可移植的方式来获取此信息。这不是套接字 API 的特性。
标签: python sockets networking udp