如何在linux C中维护非活动的TCP连接?

时间:2013-05-30 18:43:04

标签: c linux networking tcp network-programming

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

首先,我粗略地知道TCP服务器附近的防火墙可能会向其发送RST。或者存在强制TCP连接结束的保持活动超时。但我不确切知道将会发生什么?有人可以解释一下吗?

第二,除非我希望它结束​​,否则是否可以维持此TCP连接?

我只希望TCP服务器可以在其TCP堆栈上保持此TCP连接。但我不希望TCP客户端参与,我不希望客户端发送KEEP-ALIVE消息。我不希望任何其他第三方实体参与其中。我不关心TCP客户端是否丢失了连接。我只希望当我编写TCP服务器的源代码时,源代码可以设法维护服务器上的TCP连接。

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

谢谢!

1 个答案:

答案 0 :(得分:0)

如果您在最后启用keepalive,它将发送定期探测,如果没有应答,您的结束将重置连接。默认情况下,Keepalive处于关闭状态,因此如果您未在最后启用它,则不会发生这种情况。

然而,同伴仍然可以在他的结尾启用它,在这种情况下,他的结局将如上所述,你既不能阻止也不能检测它。

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

如果您不想要TCP,请使用其他内容。