Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我编写了自己的 telnet 客户端。我有一个问题,无法解决。我连接到设备并成功与之通信,但在某些时候设备断开连接。
当我使用 Zoc 终端时,它会在这种情况下写入“[TELNET] INFO: DISCONNECTED”。
当我使用自己的终端时,我无法识别这种情况。TcpClient 中的“已连接”属性为 True。当我在断开连接后尝试将某些内容写入流时,我会收到异常。但这为时已晚。
我如何识别连接丢失?
谢谢。
尝试使用Socket而不是TcpClient. 一些 telnet 守护程序需要每次按键来刷新缓冲区,因此请尝试调用Stream.Flush您的相关流。我建议将 a 绑定NetworkSteam到您的Socket并将其包装在 a 中并在每次按键时TextWriter调用。Flush
Socket
TcpClient
Stream.Flush
NetworkSteam
TextWriter
Flush
通过查看连接成功并返回零字节Socket,您可以识别丢失的连接。Socket.ReceiveAsync您还可以使用同步Socket.Receive并检查引发的异常。
Socket.ReceiveAsync
Socket.Receive