c# - 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)获取输出时,在某些情况下我只得到第一行输出。但是通过命令行提供的输出非常广泛。
通过 telnet 和 c# Telnet 连接到 LAN 中的远程 pc 通过 telnet 和 c#
连接到公共 pc
你能告诉我我做错了什么吗?:) 谢谢大家的帮助。
解决方案
在 telehack.com 的情况下,通过 Telnet 发送的第一个字节是命令字节(参见https://en.wikipedia.org/wiki/Telnet#Telnet_data)。它们以 0xFF 开头,然后是命令。您可以在调试窗口中的以下示例中清楚地看到它们(数字为十进制)。
推荐阅读
- javascript - Discord Bot:在重新加载时不会重置的每个公会变量
- javascript - 将赛季时间表分成几周而不重复球队比赛
- ruby-on-rails - 如何在rails中创建word文档
- python - 将 PDF 文件转换为 HTML 的最佳方法
- android - 如何在类方法中执行 Room 请求?
- java - 使用按钮更改jsp中的变量值
- excel - 从 DataGridView 获取数据(数据取自 excel)并在 vb.net 图表上显示
- javascript - 如何使用 img.src 构造渲染函数
- javascript - 如何根据随机播放的视频在 html 中显示文本?
- javascript - 如何正确地将两个部分放在另一个之下?