我遇到了一些我无法理解的奇怪行为。我正在 Windows 2003 Server 上安装软件。此软件需要绑定到特定 UDP 端口和所有 TCP 地址才能侦听请求。我似乎可以绑定到我选择的几个端口,但不能绑定到其他端口;具体来说,我无法绑定到我需要的一个端口,即 5001。其他假定空闲的端口(如 5002、5010)也失败了。我的第一个猜测是“它正在被另一个程序使用”,但它没有显示在 netstat 或 TCPView(来自 sysinternals)中,所以我不知道该怎么做。该程序收到套接字错误 10048(地址已在使用中)。
这些是我用来尝试查找“有问题的”程序的示例命令:
c:\>netstat -a -v -n -o -p udp
Active Connections
Proto Local Address Foreign Address State PID
UDP 0.0.0.0:445 *:* 4
UDP 0.0.0.0:500 *:* 512
UDP 0.0.0.0:1434 *:* 1980
UDP 0.0.0.0:4500 *:* 512
UDP 0.0.0.0:5000 *:* 5920
UDP 0.0.0.0:5500 *:* 5288
UDP 127.0.0.1:123 *:* 856
UDP 127.0.0.1:1314 *:* 4376
UDP 172.20.1.10:123 *:* 856
UDP 172.20.1.10:137 *:* 4
UDP 172.20.1.10:138 *:* 4
(No UDP port 5001 is in use!)
Or:
C:\> netstat -an | findstr 5001
(no output)
我使用本地管理员帐户运行所有测试,但无济于事。我的程序是用 C++(Winsock 2)编写的,尽管我也用一个简单的 VB6 程序进行了快速测试,结果相同。没有安装 DNS 服务(已知它会保留 UDP 端口范围)。
我如何才能找到“有问题的”程序,即占用我需要使用的 UDP 端口的程序?
答案1
端口 5000 和 5001 由 Yahoo Messenger 使用。不知道 netstat 时是否同时显示这两个端口。
另外,5001 很可疑 - 我记得它被远程访问木马使用过。抱歉,我没有详细信息。
您是否尝试过远程登录到服务器的 5001 端口?该端口是否正在监听/使用中?
答案2
在我看来,这看起来像是操作系统错误。它非常非常老旧,所以谁知道呢?短期内,重启。长期来看,考虑升级到受支持的操作系统;对服务器 2003 的支持已于 2015 年 7 月 14 日结束。