.NET TCPClient 连接状态

标签 .net sockets networking tcp tcpclient

背景

我正在通过 TCP 连接与服务器(当然我无法访问)进行通信。我要连接的应用程序需要两个连接。一个作为“我想连接”,握手类型的东西,第二个在不同的端口上,用于实际连接。经过几天的努力,我发现要接受第二个连接,第一个断开连接 (FIN) 必须由服务器启动(它会立即执行)。如果客户端发起断开,第二次连接将被拒绝。

问题:

我读过很多关于此的帖子,我知道 TCP 连接以及您如何无法真正知道连接是否处于事件状态等等(请不要以连接断开、断线、意外关机等方式回应) .但是有什么方法可以检测到远程服务器已正确地断开连接,而无需尝试向其写入数据。

再次声明,我不是在谈论连接中断、断线等等。我想知道服务器何时发送我已确认的 FIN 段。听起来很简单,对吧?

最佳答案

如果我理解 NetworkStream -文档正确。当您从 NetworkStream 进行读取(同步或异步)时,它返回 0 字节,这意味着远程方已关闭连接。即,FIN 已被确认。

关于.NET TCPClient 连接状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15163560/

相关文章:

c# - 覆盖虚拟属性时如何避免无限循环?

c - 从多个套接字中选择 - 正确的 NFSD 值?

c# - 如何在 C# 中进行非阻塞套接字调用以确定连接状态?

networking - Kademlia 路由表和距离度量

c++ - 使用C++提取数据包信息

c# - 任何 cpu 和 x64 之间的托管代码引用

c# - Monitor.Wait() 是否仍然调用上下文切换?

javascript - .net 2.0 : getting all keys and values pairs from object, 从 JS 传递过来

java - 套接字与 SocketChannel

networking - 在 UnrealScript 中连接到服务器