1

我设置了一个 TCP 服务器/客户端,它们以我通常想要的方式进行通信。

我现在要做的是添加允许客户端在连接丢失后自动重新连接到服务器的功能。我无法在网上找到有关如何执行此操作的完整信息。

详细信息:-我只有 1 台服务器,到目前为止它最多只能托管 1 个连接。- 当客户端或服务器断开连接时 - 两者都关闭(这样关闭服务器和客户端的套接字是否明智?)

理想情况下,我希望客户端每次都能够重新连接到服务器上的同一端口。我了解 TIME_WAIT 以及为什么它是必要的。除非我没有其他选择,否则我真的不想使用 SO_REUSEADDR。这个一般是怎么处理的?我是否应该在服务器端打开一个新端口,同时等待旧套接字完成 TIME_WAIT 并基本上在两个端口之间交替(这意味着客户端必须跟踪 2 个可能的端口)?

感谢您的建议!

4

1 回答 1

3

TIME_WAIT 是 TCP 连接的状态,而不是端口。每个 TCP 连接都由元组(本地地址、本地端口、远程地址、远程端口)标识。因此,如果客户端使用新的(动态)本地端口连接到服务器,则会创建新的 TCP 连接并且 TIME_WAIT 不会出现问题。

于 2012-07-15T09:04:43.643 回答