以下是我的环境:
- Linux, Ubuntu
- C++/gdb
- eclipse
我正在实现一个 TCP 套接字服务器应用程序。
在开发/调试时,应用程序可能会在接受连接后终止,并且在正常关闭和关闭打开的套接字之前终止。
在这种情况下,应用程序的下一次执行将无法绑定(bind)到监听端口,只有等待一分钟左右才能再次绑定(bind)成功。
我的假设是 Linux 内核有一些清理机制来〜收集〜所有未正常关闭的套接字,这解释了为什么我必须等待〜1 分钟才能再次绑定(bind)端口。
话虽如此,有没有办法避免这 1 分钟的等待?有没有办法强制操作系统收集所有未正常关闭的套接字?
我们将不胜感激。
索芬的纳达夫
最佳答案
当然有,只需在套接字上设置SO_REUSEADDR
SOL_SOCKET
级别选项即可。
int yes = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes))
perror("setsockopt");
关于c++ - Linux下的socket开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9749688/