【发布时间】:2014-10-23 17:13:39
【问题描述】:
我正在尝试使用setsockopt() 设置不同的IP_MTU_DISCOVER 值对 udp 数据包碎片的影响,并发现(来自ip(7) 的man 页面)我需要将其值设置为IP_PMTUDISC_WANT 或IP_PMTUDISC_DONT 关闭“不分段”标志。但是,当我尝试发送数据包时,我得到了socket.error: [Errno 90] Message too long。
import IN, socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
hostname = 'localhost'
s.connect((hostname, 1060))
s.setsockopt(socket.IPPROTO_IP, IN.IP_MTU_DISCOVER, IN.IP_PMTUDISC_DONT)
mtu = s.getsockopt(socket.IPPROTO_IP, IN.IP_MTU)
print 'MTU:', mtu
s.send('.' * (mtu + 1))
print 'Big packet sent'
谢谢
【问题讨论】:
标签: python sockets python-2.7