0

以前有人问过这个问题,但我似乎无法理解它,因为我见过的所有问题的小细节都让我感到厌烦......

我一直遇到问题,当我创建 TCP 套接字服务器时,如果我建立连接,端口在 X 时间内无法使用(如果未与客户端建立连接,我可以在终止后重新运行程序而不会出现问题) . 这显然与 TCP 在断开连接之前需要的超时有关。

我在服务器和客户端的套接字上都使用 close(socketfd) 没有占上风...有没有办法让套接字在成功终止后立即可用(如在 fd 上调用 close)而无需等待什么似乎永远或重新启动机器?

4

2 回答 2

5

是的,调用了相关的套接字选项SO_REUSEADDR。您用于setsockopt()设置套接字选项。

但是,您通常不应该关闭服务器的主套接字,而是应该使用accept()创建每个客户端的套接字,当客户端断开连接时可以关闭该套接字。

于 2013-04-03T13:01:30.150 回答
1

套接字在关闭后可以停留在 TIME_WAIT 状态一段时间。能够在此状态集中重用套接字SO_REUSEADDR

于 2013-04-03T13:01:16.737 回答