1

如果 TCP 客户端与 TCP 服务器建立 TCP 连接。然后 TCP 客户端永远不会向服务器发送任何数据包。

首先,我大致知道 TCP 服务器附近的防火墙可能会向它发送 RST。或者存在强制 TCP 连接结束的保持活动超时。但我不知道到底会发生什么?谁能解释一下?

其次,除非我希望它结束​​,否则是否可以保持这个 TCP 连接?

我只是希望 TCP 服务器可以在它的 TCP 堆栈上保持这个 TCP 连接。但是我不想让 TCP 客户端参与进来,我不想让客户端发送 KEEP-ALIVE 消息。我不希望涉及任何其他第三方实体。我不在乎 TCP 客户端是否丢失了连接。我只是希望当我在编写TCP服务器的源代码时,源代码能够设法维持服务器上的TCP连接。

注意:我的编程语言是 LINUX C

谢谢!

4

1 回答 1

0

如果您在您的终端启用keepalive,它将发送定期探测,如果它们没有被回答,您的终端将重置连接。Keepalive 默认情况下是关闭的,所以如果你没有在你的最后启用它,它就不会在你的最后发生。

但是对等端仍然可以在他的端启用它,在这种情况下,他的端会像上面一样运行,您既无法阻止,也无法检测到它。

剩下的问题没有意义。客户端或防火墙可以出于多种原因随时发送 RST。你不能阻止它,也不能在代码中忽略它。如果由于任何原因在任何地方都重置了连接,则无需维护连接。

如果您不想要 TCP,请使用其他东西。

于 2013-05-30T23:10:45.160 回答