C++ Linux下Socket的开发
以下是我的环境:C++ Linux下Socket的开发,c++,linux,sockets,linux-kernel,C++,Linux,Sockets,Linux Kernel,以下是我的环境: Linux,Ubuntu C++/gdb 蚀 我正在实现一个TCP套接字服务器应用程序。 在开发/调试时,应用程序可能会在连接被接受之后,以及在打开的套接字正常关闭之前终止。 在这种情况下,应用程序的下一次执行将无法绑定到侦听端口,只有在等待一分钟左右后,绑定才会再次成功 我的假设是Linux内核有一些清理机制来收集所有未正常关闭的套接字,这解释了为什么我必须等待~1分钟才能再次绑定端口 话虽如此,有没有办法避免这1分钟的等待?有没有办法强制操作系统收集所有未正常关闭的套接字
在开发/调试时,应用程序可能会在连接被接受之后,以及在打开的套接字正常关闭之前终止。 在这种情况下,应用程序的下一次执行将无法绑定到侦听端口,只有在等待一分钟左右后,绑定才会再次成功 我的假设是Linux内核有一些清理机制来收集所有未正常关闭的套接字,这解释了为什么我必须等待~1分钟才能再次绑定端口 话虽如此,有没有办法避免这1分钟的等待?有没有办法强制操作系统收集所有未正常关闭的套接字 任何帮助都将不胜感激
Sophin的Nadav当然有,只需在插座上设置
以便重新使用EADDR
SOL_插座
级别选项
int yes = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes))
perror("setsockopt");
当然有,只需在套接字上设置
以便重新使用eaddr
SOL\u SOCKET
level选项即可
int yes = 1;
if (setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof yes))
perror("setsockopt");
指定等待的不是Linux,而是TCP RFC(查找“2*MSL”)。指定等待的不是Linux,而是TCP RFC(查找“2*MSL”)。