如何强行关闭打开/悬挂插座?

时间:2012-01-20 09:22:23

标签: c linux sockets

我有一个在Linux上运行的C ++开发的应用程序。此应用程序在启动时打开某些TCP套接字。但是,如果在连接处于已建立状态时此应用程序被终止,则服务器端套接字仍会保持关闭状态(TIME_WAIT)一段时间。

由于我的应用程序不经意地重新启动,因此无法绑定从前一次崩溃中关闭几乎60秒的端口。

是否有任何系统调用可以强行关闭所有打开/悬空插座?所以在我去绑定之前,我可以确保所有打开/悬挂的套接字都关闭,我的绑定不会失败。

感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用SO_REUSEADDR设置setsockopt。然后你就可以直接绑定了。

int optval = 1;
setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &optval, sizeof(optval));