求问 windows udp 关播包 wireshark 能抓到但是程序接收不到是啥问题

12 天前
 sujin190
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 程序,有知道这是啥问题的否?感谢感谢!

436 次点击
所在节点    问与答
3 条回复
sujin190
11 天前
研究了一番发现,是子网掩码的问题,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 广播数据包
bbsingao
11 天前
为什么 dhcp 这么设置
sujin190
11 天前
@bbsingao #2 办公室网络,也不明所以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1072270

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX