在我尝试在 WinXP 机器上启动 Java 应用服务器时,它经常在尝试侦听端口时无法启动并出现“地址已在使用中”错误。对我来说,通常的解决方案是启动 tcpview(来自 sysinternals),查看正在使用该端口的进程,终止该进程,然后重试。99% 的时间都有效。
然而,剩下的 1% 不起作用。应用服务器坚持认为端口(例如端口 1099,这并不重要)正在使用中,而 tcpview 也同样坚持认为没有使用。
应用服务器只是将服务器套接字创建委托给 Windows,因此我认为这不是特定于 Java 的问题,尽管我很高兴对此进行纠正。
怎么回事?tcpview 是否遗漏了一些特殊情况?有没有更好的工具可以帮助我诊断这些情况?
答案1
很奇怪。要查明问题,您可以尝试
网络状态监测
它也应该列出所有正在使用的端口。如果不一致,则问题可能出在 tcpview 上。否则,您必须寻找其他地方。
答案2
另外你可以尝试
netstat -ano
找到 ProcessID 并稍微缩小范围,假设你的端口是 8191
netstat -ano | find "8191"