我try 向telnet服务器发送一些选项,因此我使用以下代码:

    OutputStream outputStream = telnetClient.getOutputStream();
    byte[] option = new byte[3];
    option[0] = (byte) TelnetCommand.IAC;
    option[1] = (byte) TelnetCommand.DO;
    option[2] = (byte) 3;
    outputStream.write(option);
    outputStream.flush();

但在Wireshark中,我看到的是4个字节,而不是3个:

0xff 0xff 0xfd 0x03个而不是0xff 0xfd 0x03

如您所见,0xff字节是复制的. 我不知道为什么会发生这种事.有谁知道吗?

推荐答案

您应该使用sendCommand()方法发送TelnetCommand.DO,该TelnetCommand.DO位于0xFF前面,后跟选项.

你这样做的方式告诉客户端将字节作为101发送,所以0xFF在流中通过加倍来转义.

RFC 854 - Telnet Protocol Specification个值得一看.

Java相关问答推荐

try Dockerize Maven应用程序,但发布版本21不支持"

Mongo DB Bson和Java:在子文档中添加和返回仅存在于父文档中的字段?

Java中不同包中的类之间的配置共享

Java List with all combinations of 8 booleans

Junit with Mockito for java

我无法将附件发送到NetBeans之外

是否保证在事务性块的末尾标记违反约束?

Chunk(Int)已弃用并标记为要删除

Helidon 4和Http API

OpenGL ES 3.0-纹理黑色

自定义批注的外推属性值

基于接口的投影、原生查询和枚举

使用MediaPlayer类在一段时间后停止播放音乐

TinyDB问题,无法解析符号';上下文&

Java CDI:@Singleton@Startup@Inject无法实现接口

当我将JTextField的getText函数与相等的String进行比较时;t返回true

谷歌应用引擎本地服务器赢得';t在eclipse上运行

ResponseEntity.控制器截断响应的JSON部分

使用StringBuilder和append方法创建字符串时Java字符串内部方法的问题

使用原子整数的共享计数器并发增量