14

我有一个应用程序,我在其中接受来自 telnet 客户端的套接字连接并建立一个简单的键盘驱动字符 GUI。

telnet 客户端,至少在 Linux 上,默认为一次一行的模式,所以我总是必须^]mode char手动操作。

浏览相关 RFC 表明,如果我的应用程序只是IAC DONT LINEMODE (\377\376\042)在客户端连接后立即发送字符,则应强制客户端进入字符模式。但是,它没有任何区别。

可以完成这项工作的最简单的代码是什么?理想情况下只是一个要发送的字符串。我的应用程序可以吸收客户发回的任何垃圾。

4

3 回答 3

9

有趣的。我有更多的运气发送

IAC WILL ECHO IAC WILL SUPPRESS_GO_AHEAD IAC WONT LINEMODE
255  251    1 255  251                 3 255  252       34

IAC WONT LINEMODE 似乎是多余的:没有它,我的 telnet 客户端似乎可以进入正确的状态,但为了完整起见,我将其保留。

于 2009-07-01T12:28:11.153 回答
7

为了它的价值,我自己解决了。

// IAC WONT LINEMODE IAC WILL ECHO

write(s,"\377\375\042\377\373\001",6);

使远程(至少从 Linux 机器上的 Xterm 远程登录)进入正确的状态。

于 2008-11-10T21:40:50.377 回答
3

凯文的解决方案效果很好:

write(s,"\377\375\042\377\373\001",6);

虽然评论略有错误。它应该说“DO LINEMODE”,而不是“WONT LINEMODE”,即:

// IAC DO LINEMODE IAC WILL ECHO

(来源:rfc854

于 2016-05-22T18:15:39.297 回答