套接字地址已被使用 - 首先忘记SO_REUSEADDR

Sil*_*olf 2 c sockets linux

请帮忙,

首先,我创建了一个套接字并将其绑定到没有SO_REUSEADDR的地址.

然后,我的程序崩溃(没有正确关闭套接字)

接下来,我再次运行它并从bind()返回"Address in in use"

我试图修改源代码以使用SO_REUSEADDR,但它是没有用的.

现在,我无法再次运行绑定(服务器无法重新启动)

pax*_*blo 6

您只需要等到会话超时,然后它将被完全删除.

当会话以"脏"方式关闭时,您不能再次重复使用该地址(假设您没有使用SO_REUSEADDR)两倍的最大段生命周期 - 通常这对于常规网络硬件来说大约需要4分钟,尽管它实际上取决于关于媒体的属性(例如,卫星可能具有更大的MSL).

这是为了确保仍处于转换状态的任何数据包都不会到达,并在新会话中搞砸您的顺序.