【问题标题】:Telnet enable linemode from serverTelnet 从服务器启用线路模式
【发布时间】:2014-09-07 08:01:29
【问题描述】:

我正在开发面向线路的 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 客户端。

【问题讨论】:

    标签: c linux networking gnu telnet


    【解决方案1】:

    我刚刚检查了我的旧 telnet 服务器源,并从服务器端发送了 WILL 和 WONT。我从客户端处理了 DO 和 DONT。

    您实际上是在尝试编写一个真正的 telnet 服务器,还是只是一个与 telnet 兼容且一次发送一行数据的服务器(如基于文本的聊天或游戏服务器)?如果是后者,您可以取消大部分选项,因为根据我的经验,telnet 客户端默认一次连接。

    对于我的游戏服务器 (MUD++),我在标准游戏模式下所做的只是在登录密码状态期间禁用/启用回显,或者在用户调用 PICO 编辑器时进入字符模式并启动伪 tty。

    更新:如果您打算认真编写 telnet 服务器或任何其他网络软件,我真的很喜欢经典的 W. Richard Stevens 系列。 TCP/IP Illustrated Volume 1, The Protocols 涵盖了实际意义上的 telnet,再加上 1184 之类的 RFC(如果我记得的话),您将拥有所需的一切。

    【讨论】:

    • 它不起作用。我仍然一次获得一个角色。 GNU inetutils 似乎发送 IAC WONT ECHO。 GNU inetutils 是原因吗?
    • 我认为它正在发送 WONT ECHO,因为您的服务器发送 DONT ECHO 而 WONT 是对 DONT 的响应。
    • @theunamedguy:如果它发送“WONT ECHO”以响应您告诉它“DONT ECHO”,那是正常的。如果您将整个消息交换放在原始帖子中可能会有所帮助。
    • 没关系。我周围有一些启用 SGA 的陈旧代码。它可以在移除后使用。
    • 哦,是的,这不是一个“真正的”远程登录服务器,它只是一个游戏服务器
    猜你喜欢
    • 2012-08-19
    • 1970-01-01
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 2011-04-30
    • 2018-11-14
    • 1970-01-01
    • 2014-06-28
    相关资源
    最近更新 更多