我编写自己的telnet客户端。我有一个问题,无法解决它。 我连接到设备并成功与之通信,但在某些时刻设备断开连接。
当我使用Zoc终端时,在这种情况下写“[TELNET] INFO:DISCONNECTED”。
当我使用自己的终端时,我无法识别这种情况。 TcpClient中的“已连接”属性为True。断开连接后,当我尝试将某些内容写入流时,我将收到异常。但为时已晚。
我如何识别连接丢失?
感谢。
答案 0 :(得分:0)
尝试使用Socket
代替TcpClient
。某些telnet守护程序要求每次按键刷新缓冲区,因此请尝试在相关流上调用Stream.Flush
。我建议您将NetworkSteam
绑定到Socket
并将其打包在TextWriter
中,并在每次按键时调用Flush
。
使用Socket
,您可以通过看到Socket.ReceiveAsync
成功完成并返回零字节来识别丢失的连接。您还可以使用同步Socket.Receive
并检查引发的异常。