java inputstream不读取前导十六进制字节

时间:2012-08-17 14:41:33

标签: java sockets

我的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 ......等”。

我也尝试过使用BOMInputStream,但我也无法得到它。

=>你对我如何收到它们有什么想法吗?

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

TelnetClient实例提供的输入流仅提供数据字符。 Telenet协议信令内容将被TelnetClient代码过滤掉。

如果您想获取信令信息,选项等,您需要使用TelnetClient API中的其他方法。您可以尝试各种方法。例如,您可以注册选项处理程序或通知处理程序,也可以注册“间谍流”。

答案 1 :(得分:1)

如果您真的想要查看所有数据,那么您应该只使用Socket代替TelnetClient