1

我们在 Windows 上有一个服务器应用程序无法绑定本地端口 (3050) 并给出错误WSAEADDRINUSE - Address already in use.

但是,我使用 SysInternals Utility ( TCPView ) 检查了没有进程正在侦听该端口。

请提出这背后的原因以及解决此问题的任何解决方法。

提前致谢。

4

2 回答 2

5

该错误情况将在两种情况下发生:

1) 另一个套接字已经绑定到该地址

2) 绑定到该地址的套接字最近被关闭。

在第一种情况下,我想问题是您在同一个程序中绑定到该端口号两次。

在第二种情况下,我想您的程序的先前运行在您的测试前不到 120 秒退出或崩溃。当您运行 TCPView 时,已经过了 120 秒。

于 2013-01-24T19:31:07.127 回答
2

如果您有权访问底层 C++ 代码,则可以setsockopt()SO_REUSEADDR调用bind(). 这将允许您的程序重新绑定到给定的端口,即使先前程序运行的套接字“徘徊”。

于 2013-01-24T19:35:44.480 回答