假设我有一个工作的Telnet服务器和客户机;客户机是我自己的C程序创建,尽管服务器不在我的控制之下(在我的例子中,它是一个Perle Systems IOLAN SCS48,但它可以是任何启用RFC2217的Telnet设备)。
我想使用设备串行隧道功能(通过用于Telnet的RFC 2217协议),但只在连接开始时使用因此,我从服务器接收到四个协商请求(WILL TRANSMIT-BINARY
、DO TRANSMIT-BINARY
、WILL ECHO
、DO SUPPRESS-GO-AHEAD
、WILL SUPPRESS-GO-AHEAD
、DO COM-PORT-OPTION
和IAC
;最后一个请求来自RFC 2217),并对所有请求进行响应,然后设置波特率、数据大小、奇偶校验位和停止位。
到目前为止还不错,但现在我想重新安排通信,以便服务器忽略所有未来的命令(特别是0x255
字符0x255 0x250
),这样我就可以通过设备将十六进制转换的字符串传递到接收端(连接到设备的串行端口)它获取我发送的每一个字节(并且不丢失字符串中某个地方的每一个0x255的三个字节,也不丢失存在IAC SB
()的七个字节)。
或者,是否有可能使服务器将一个转义转义字符(一行两个0x255,然后作为输入输出)作为单个0x255传递?
我不想关闭连接重新打开它是一个原始的,因为我的串行设置将丢失(因为这是设备的COM端口重定向工作原理,我想)但是,我不需要重新建立命令侦听,因此,如果需要重新配置波特率,连接可以简单地关闭并作为另一个Telnet连接重新打开。
我该如何处理?
最佳答案
如果有一个标准的IAC做忽略-进一步-IACS,我从来没有听说过。
RFC 854并不能很好地解释这一点,但记录在案的一行中两个IAC的含义是“数据字节255”,因此我认为服务器应该已经将0x255 0x255作为单个0x255向前传递不是这样吗?