Linux下的套接字开发

时间:2012-03-17 11:38:50

标签: c++ linux sockets linux-kernel

以下是我的环境:

  1. Linux,Ubuntu
  2. C ++ / GDB
  3. 的Eclipse
  4. 我正在实现一个TCP套接字服务器应用程序 在开发/调试时,应用程序可能会在接受连接后终止,并且在打开的套接字正常关闭之前就会终止。关闭。 在这种情况下,下一次执行应用程序将无法绑定到侦听端口,只有在等待一分钟后左右绑定才会再次成功。

    我的假设是Linux内核有一些清理机制来〜收集所有未正常关闭的套接字,解释为什么我必须等待〜1分钟才能再次绑定端口。

    说完了,有没有办法避免这1分钟的等待?有没有办法强制操作系统收集没有正常关闭的所有套接字?

    任何帮助将不胜感激。

    Sophin的Nadav

1 个答案:

答案 0 :(得分:4)

确实有,只需在套接字上设置SO_REUSEADDR SOL_SOCKET级别选项。

int yes = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes))
    perror("setsockopt");