我有一个 UDP 套接字在端口中侦听广播传输,它工作正常。
但是,当我休眠并恢复操作系统(Windows 7)时,套接字只是停止接收数据(我可以看到有数据使用 Wireshark 到达)。
如果我更改任何网络设置,例如更改我的 IP 地址、禁用和启用网络适配器,也会发生这种情况。
操作系统似乎在休眠时禁用所有网络适配器,并在恢复时重新启用它们。
select
只是返回0
(超时),这与我没有收到任何数据时没有什么不同。我在任何地方都找不到对这种行为的任何引用。
如果我关闭套接字并重新创建它,它就会再次开始工作。
恢复操作系统后,我的 TCP 侦听套接字仍然可以正常工作。
关于如何检测和纠正这种情况的任何想法?
编辑:它仍然可以直接接收地址数据,只是不再接收广播传输。
EDIT2:刚刚发现,如果我写入套接字(将虚拟数据包发送到任何地方),它就会再次开始工作......