C#Telnet客户端不输出/输出不完整

时间:2019-02-26 12:45:28

标签: c# telnet

我对C#中telnet客户端的基本实现有疑问。当我尝试通过命令行(telnet 192.168.0.255 23)连接到本地网络中的远程计算机时,没有问题,但是使用此代码,我无法获得任何逻辑输出
(只是字符“ ??%??????????'??¬????”)。

TcpClient telnetClient = new TcpClient("192.168.0.255", 23);
NetworkStream telnetStream = telnetClient.GetStream();
byte[] data = new Byte[4];
string responseData = String.Empty;
int bytes = telnetStream.Read(data, 0, data.Length);
while (true){
   responseData += Encoding.ASCII.GetString(data, 0, bytes);
   bytes = telnetStream.Read(data, 0, data.Length);
   if (!telnetStream.DataAvailable)
      break;
}
Console.WriteLine(responseData);
telnetClient.Close();

我意识到,当我尝试从不同的公共服务器(例如telehack.com)获取输出时,在某些情况下,我只会获得第一行输出。但是通过命令行提供的输出要广泛得多。

garbage values
Telnet connection to remote pc in LAN via telnet and c#

您能告诉我我做错了什么吗? :) 谢谢大家的帮助。

1 个答案:

答案 0 :(得分:0)

对于telehack.com,通过Telnet发送的第一个字节是命令字节(请参阅https://en.wikipedia.org/wiki/Telnet#Telnet_data)。它们以0xFF开头,然后是命令。您可以在下面的示例中的调试窗口中清楚地看到它们(数字以十进制表示)。

我用您的(扩展)C#脚本尝试了此操作: enter image description here