java输入流不读取前导十六进制字节

标签 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...etc”。

我也尝试过使用 BOMInputStream,但也无法获取它。

=>您知道我如何收到这些信息吗?

感谢您的帮助!

最佳答案

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

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

关于java输入流不读取前导十六进制字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007904/

相关文章:

c# - 在 Linux 上从 .NET Core 手动调用 recvmsg 不会返回

java - 在 Java 中通过套接字发送无符号字节

c - TCP 网络吞吐量测量

Java方法定义问题

JavacompareTo() 未定义运算符

java - 如何设置元素在所有设备上保持原位

java - 为什么我会收到 "classes must have either one (and only one) constructor"错误?

java - Java 中的 ArrayList.toArray() 方法

python-3.x - 错误:can.socketcan.ctypes:Setting filters failed -1 Find out the can error frame

c++ - 绑定(bind)在同一端口上的两个进程如何接收相同的消息?