通过阅读这里的一些问题和答案,似乎 telnet 流从未真正关闭。使用 DataAvailable() 不会返回。
我继承了一些需要很长时间才能完成的代码,我们认为问题出在 telnet 服务器上。但是,有一个字节[32757],代码试图在其中存储 telnet 服务器的响应。
类似于以下内容:
Byte byteArray[] = new Byte[32757];
TcpClient sock = new TcpClient();
sock.GetStream().read(byteArray, 0 byteArray.length);
如果没有 32757 字节或更多字节,我假设此代码会等待,直到发送足够的空数据包来构成字节数组的大小。这个对吗?
有没有办法检查 telnet 服务器是否已完成发送它想要的所有内容?telnet 会话的每个“页面”中没有可见的终止字符或字符串。
我在想一种更正此代码的方法是一次读取几个字节,将其添加到字符串中,检查字符串中是否存在终止字符或字符集,如果找到则返回。否则,读取更多字节,将其添加到字符串中,然后再次检查。
建议?