我正在开发一个面向行的telnet服务器,而不是客户端。
目前,要设置连接,我正在使用:
IAC DONT ECHO
IAC DONT SURPRESS-GO-AHEAD
IAC DO LINEMODE
IAC DO NAWS
目前,服务器只处理IAC AYT和NAWS相关的东西。其他任何东西都被拒绝了,如下:
IAC DONT <OPTION>
但是,服务器仍然会一次一个地获取字符。
根据here,ECHO和SGA(同时)启用一次一个字符模式。但是,我都禁用了。 如何让客户端一次发送一行数据?
我正在使用GNU inetutils的telnet来测试它。
This question的标题是相似的,但与其标题相反,是关于编写telnet客户端的问题。
答案 0 :(得分:3)
我刚检查了我的旧telnet服务器源,我从服务器端发送WILL和WONT。我从客户那里处理了DO和DONT。
您是否真的尝试编写一个真正的telnet服务器,或者只是一个与telnet兼容的服务器,它一次发送一行数据(如基于文本的聊天或游戏服务器)?如果是后者,您可以取消大多数选项,因为根据我的经验,telnet客户端默认一次排队。
对于我的游戏服务器(MUD ++),我在标准游戏模式下所做的就是在登录时在密码状态期间禁用/启用回声,或者在用户调用PICO编辑器时启动伪tty并启动伪tty。 / p>
更新:如果你打算认真地写一个telnet服务器或任何其他网络软件,我真的很喜欢经典的W. Richard Stevens系列。 TCP / IP Illustrated第1卷,协议 涵盖了实际意义上的telnet,再加上像1184这样的RFC(如果我还记得),你将拥有一切需要。