我们在 Windows 上有一个服务器应用程序无法绑定本地端口 (3050) 并给出错误WSAEADDRINUSE - Address already in use.
但是,我使用 SysInternals Utility ( TCPView ) 检查了没有进程正在侦听该端口。
请提出这背后的原因以及解决此问题的任何解决方法。
提前致谢。
我们在 Windows 上有一个服务器应用程序无法绑定本地端口 (3050) 并给出错误WSAEADDRINUSE - Address already in use.
但是,我使用 SysInternals Utility ( TCPView ) 检查了没有进程正在侦听该端口。
请提出这背后的原因以及解决此问题的任何解决方法。
提前致谢。
该错误情况将在两种情况下发生:
1) 另一个套接字已经绑定到该地址
2) 绑定到该地址的套接字最近被关闭。
在第一种情况下,我想问题是您在同一个程序中绑定到该端口号两次。
在第二种情况下,我想您的程序的先前运行在您的测试前不到 120 秒退出或崩溃。当您运行 TCPView 时,已经过了 120 秒。
如果您有权访问底层 C++ 代码,则可以setsockopt()
在SO_REUSEADDR
调用bind()
. 这将允许您的程序重新绑定到给定的端口,即使先前程序运行的套接字“徘徊”。