Linux下的套接字开发

Socket development under Linux

本文关键字:开发 套接字 Linux      更新时间:2023-10-16

以下是我的环境:

  1. Linux、Ubuntu
  2. C++/gdb
  3. Eclipse

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

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

话虽如此,有没有办法避免这1分钟的等待?是否有任何方法可以强制操作系统收集所有未正常关闭的套接字?

任何帮助都将不胜感激。

Nadav在Sophin

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

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