我有一个 Telnet 客户端定义为:
TelnetClient telnet = new TelnetClient();
telnet.connect(server, port);
然后我得到输入流:
InputStream in = telnet.getInputStream();
然后尝试循环读取上面的内容:
while (true) {
int TEST = in.read();
}
当我收到输入的“文本”部分时,一切似乎都很顺利......但我缺少(对我来说非常重要!)前导字节。 以下是我在端口上看到的情况的窥探:
64: a88f ffff 3034 3131 3032 3030 3030 3030 ¨...041102000000
80: 3030 322e 3031 3131 2e36 2e34 2020 3135 002.0111.6.4 15
96: 2e39 2e33 2020 3030 3132 30 .9.3 00120
注意“ffff”:这是我需要的主要部分(之前的所有内容都是垃圾:TCP 通信的一部分)。
但是,当打印“TEST”变量时,我只看到“041102...etc”。
我也尝试过使用 BOMInputStream,但也无法获取它。
=>您知道我如何收到这些信息吗?
感谢您的帮助!
最佳答案
TelnetClient
实例提供的输入流仅提供数据字符。 Telenet 协议(protocol)信令内容将被 TelnetClient
代码过滤掉。
如果您想获取信令信息、选项等,则需要使用 TelnetClient
API 中的其他方法。您可以尝试多种方法。例如,您可以注册一个选项处理程序或一个通知处理程序,或者您可以注册一个“ spy 流”。
关于java输入流不读取前导十六进制字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007904/