如果TCP客户端与TCP服务器建立TCP连接。则TCP客户端永远不会向服务器发送任何数据包。
首先,我大致知道TCP服务器附近的防火墙可能会向其发送RST。或者存在强制TCP连接结束的保活超时。但我不知道到底会发生什么?有人能解释一下吗?
其次,是否可以保持此TCP连接,除非我希望它结束?
我只希望TCP服务器能够将这个TCP连接保留在它的TCP堆栈上。但是我不想让TCP客户端参与进来,我不想让客户端发送保活消息。我不想让任何其他的第三方实体参与进来。我不关心TCP客户端是否断开了连接。我只希望当我写TCP服务器的源代码时,源代码能够设法维护服务器上的TCP连接。
注意:我的编程语言是LINUX C
谢谢!
发布于 2013-05-31 07:10:45
如果您在您的终端启用了keepalive,它将发送定期探测,如果它们不被应答,您的终端将重置连接。Keepalive在默认情况下是关闭的,所以如果你不在你的一端启用它,它就不会从你的一端发生。
然而,对等体仍然可以在他的终端启用它,在这种情况下,他的终端将按照上面的方式运行,而您既不能阻止它,也不能检测它。
剩下的问题就没有意义了。由于多种原因,客户端或防火墙可以随时发送RST。你不能阻止它,你也不能在代码中忽略它。如果由于任何原因在任何地方重置了连接,则无需维护连接。
如果你不想要TCP,那就用别的东西吧。
https://stackoverflow.com/questions/16843645
复制相似问题