强制telnet客户端进入字符模式

时间:2008-11-07 19:14:43

标签: char default telnet

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

telnet客户端,至少在Linux上,默认为一次一行模式,因此我必须手动执行^]mode char

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

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

3 个答案:

答案 0 :(得分:8)

有趣。我发送了更多运气

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

IAC WONT LINEMODE似乎是多余的:我的telnet客户端似乎没有它就到了正确的状态,但是为了完整性我把它留了下来。

答案 1 :(得分:6)

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

// IAC WONT LINEMODE IAC WILL ECHO

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

将远程(至少从Linux机箱上的Xterm telnet)带到正确的状态。

答案 2 :(得分:0)

Kevin的解决方案效果很好: write(s,"\377\375\042\377\373\001",6);

虽然评论稍有不妥。它应该说“DO LINEMODE”,而不是“WONT LINEMODE”,即: // IAC DO LINEMODE IAC WILL ECHO

(资料来源:rfc854