Frame 12326: 130 bytes on wire (1040 bits), 130 bytes captured (1040 bits) on interface \Device\NPF_{ADED3968-3BF4-44A4-BDFF-B9B3F7384432}, id 0
Ethernet II, Src: MarquetteEle_05:36:a1 (00:00:a1:05:36:a1), Dst: Broadcast (ff:ff:ff:ff:ff:ff)
Internet Protocol Version 4, Src: 192.168.2.17, Dst: 192.168.2.255
User Datagram Protocol, Src Port: 3783, Dst Port: 7000
Data (88 bytes)
wireshark 抓包看到是这样的,但是程序就是收不到,socket bind 0.0.0.0 7000 端口,并且已设置 setsockopt(SOL_SOCKET, SO_BROADCAST, 1),python 程序,有知道这是啥问题的否?感谢感谢!
1
sujin190 OP 研究了一番发现,是子网掩码的问题,dhcp 分配本机 ip 192.168.2.165 ,网关 192.165.2.1 ,子网掩码 255.255.254.0 ,这时候算出来的广播地址其实是 192.168.3.255 ,和 wireshark 抓包的光比地址 192.168.2.255 并不匹配,所以程序不能接收,子网掩码需要是 255.255.255.0 时关播地址才是 192.168.2.255
顺便,网上说开启 hyper-V 虚拟网卡会导致不能接收 udp 广播数据包,经测试并未发现这个问题,子网掩码修改为正确 255.255.255.0 后能正确接收 udp 广播数据包 |
2
bbsingao 63 天前
为什么 dhcp 这么设置
|