1

我编写了自己的 telnet 客户端。我有一个问题,无法解决。我连接到设备并成功与之通信,但在某些时候设备断开连接。

当我使用 Zoc 终端时,它会在这种情况下写入“[TELNET] INFO: DISCONNECTED”。

当我使用自己的终端时,我无法识别这种情况。TcpClient 中的“已连接”属性为 True。当我在断开连接后尝试将某些内容写入流时,我会收到异常。但这为时已晚。

我如何识别连接丢失?

谢谢。

4

1 回答 1

0

尝试使用Socket而不是TcpClient. 一些 telnet 守护程序需要每次按键来刷新缓冲区,因此请尝试调用Stream.Flush您的相关流。我建议将 a 绑定NetworkSteam到您的Socket并将其包装在 a 中并在每次按键时TextWriter调用。Flush

通过查看连接成功并返回零字节Socket,您可以识别丢失的连接。Socket.ReceiveAsync您还可以使用同步Socket.Receive并检查引发的异常。

于 2013-10-30T15:58:47.190 回答