【问题标题】:.NET TCPClient Connection State.NET TCPClient 连接状态
【发布时间】:2013-03-01 17:34:21
【问题描述】:

背景

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

问题:

    我已经阅读了很多关于此的帖子,并且我知道 TCP 连接以及您如何无法真正知道连接是否处于活动状态以及所有这些(请不要以断开连接、断线、意外关闭等响应) .但是有什么方法可以检测到远程服务器已正确断开连接而不尝试向其写入数据。

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

【问题讨论】:

    标签: .net sockets networking tcp tcpclient


    【解决方案1】:

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

    【讨论】:

    • 是的,NetworkStream.Read() 会阻塞,直到远程客户端断开连接。正是我想要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2012-04-29
    • 2019-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    • 2016-04-08
    • 2015-03-27
    • 1970-01-01
    相关资源
    最近更新 更多