无法绑定到本地端口 - WSAEADDRINUSE

时间:2013-01-24 19:28:50

标签: c++ network-programming port bind

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

但是,我已经使用SysInternals实用程序( TCPView )检查过没有进程正在侦听该端口。

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

提前致谢。

2 个答案:

答案 0 :(得分:5)

在两种情况下会出现错误情况:

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

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

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

在第二种情况下,我认为您的程序的上一次运行在测试之前退出或崩溃不到120秒。当你运行TCPView时,120秒已经过去了。

答案 1 :(得分:2)

如果您有权访问底层C ++代码,则可以在调用setsockopt()之前在套接字上使用SO_REUSEADDR参数bind()。这将允许您的程序重新绑定到给定端口,即使前一个程序中有一个套接字运行'延迟'。