Ping Telnet 服务器

Posted

技术标签:

【中文标题】Ping Telnet 服务器【英文标题】:Ping Telnet Server 【发布时间】:2013-11-10 08:22:14 【问题描述】:

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

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

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

如何识别连接丢失?

谢谢。

【问题讨论】:

请出示相关源码... var tcpSocket = new TcpClient(Host, Port); tcpSocket.Connect(主机,端口); var stream = tcpSocket.GetStream(); 对不起,但这不是相关部分:-( 我在while循环中读/写数据。 如果您的意思是当客户端故意启动断开连接时,您应该修改您的协议以发送断开连接消息。如果您的意思是当客户端意外断开连接时(例如断电或 IP 地址更改),那么客户端将无法再进行通信。连接必须通过超时/连接重置在服务器端失败。 【参考方案1】:

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

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

【讨论】:

以上是关于Ping Telnet 服务器的主要内容,如果未能解决你的问题,请参考以下文章

电脑能ping通但是telnet不通,怎么办

Windows 技术篇-利用telnet方法ping端口通不通实例演示,如何测试服务器端口是否启用,windows启用telnet功能

域名和服务器ip地址都能ping通,但是网站打不开,telnet也不通

linux ping能通 telnet端口不通

Ping通了,为啥用telnet连接不上?

telnet时提示连接23端口错误,怎么解决?