我在多宿主Windows 7计算机上运行Windows服务,通过UDP与本地网络上的计算机进行通信。这种方法很好,除了有时在Windows启动期间,网络流量暂时(30秒)被路由到默认网关,导致UDP数据包丢失。这种丢包不一定是个问题,但会导致应用程序的启动时间不必要地长。
服务使用INADDR_ANY绑定到套接字。现在,当我将其更改为绑定到控制网络NIC(192.168.32.1)的IP地址时,我没有发现问题。但是,我不明白为什么绑定在这种情况下很重要,而且我也不明白为什么问题只是暂时存在。你们有没有对此有解释?
除了我好奇地找到这个问题的根本原因之外,我还希望得到这个问题的答案,这样我就可以从我的代码中删除绑定到特定的IP地址。这将我的应用程序代码与网络布局分离。
网络详情:
答案 0 :(得分:0)
使用INADDR_ANY时,将套接字绑定到默认IP地址 - 接口地址最低的IP地址。从您描述的症状来看,似乎这个界面在启动期间尚未配置,这是有道理的。
问题是,为什么要将发送套接字绑定到任何地址。我想,send
期间的隐式绑定应该对你好吗?