【发布时间】:2016-03-04 10:27:31
【问题描述】:
我有一个运行在多宿主 Windows 7 机器上的 Windows 服务,它通过 UDP 与本地网络上的机器进行通信。这工作正常,除了有时在 Windows 启动期间网络流量暂时(30 秒)被路由到默认网关,导致 UDP 数据包丢失。这种丢包不一定是问题,但会导致应用程序的启动时间过长。
服务使用 INADDR_ANY 绑定到套接字。现在,当我将其更改为绑定到控制网络 NIC (192.168.32.1) 的 IP 地址时,我没有发现问题。但是我不明白为什么在这种情况下绑定很重要,我也不明白为什么问题只是暂时存在。你们中有人对此有解释吗?
除了我想找到这个问题的根本原因之外,我还想得到这个问题的答案,这样我就可以从我的代码中删除对特定 IP 地址的绑定。这将我的应用程序代码与网络布局分离。
网络详情:
- 机器 A,Windows 7,两个 NIC:
- NIC #1(外部网络):192.168.116.x/23 (DHCP),网关 192.168.117.1
- NIC #2(int 网络):192.168.32.1/26(固定)
- 机器 B,VxWorks,一个 NIC:
- NIC #1(int 网络):192.168.32.16/26(DHCP,由机器 A 分配)
【问题讨论】:
标签: sockets networking windows-7 udp ip