【问题标题】:Does telnet add any extra bytes when sending data?telnet 在发送数据时会添加任何额外的字节吗?
【发布时间】:2018-09-14 00:01:43
【问题描述】:

我正在从 telnet 发送命令,并使用我自己的服务器使用套接字命令 recv() 接收它。如果我发送“aa”,接收到的字节是 4。我可以理解第 3 个字节是 \n,但第 4 个字节是什么?

代码:

        int r = recv(my_socket_fd, message, max_buffer, 0); //r=4 when input is aa
                if(r>0) 
                    message[r]='\0'

【问题讨论】:

标签: c sockets


【解决方案1】:

我正在从 telnet 发送命令,并使用我自己的服务器使用套接字命令 recv() 接收它。如果我发送“aa”,接收到的字节是 4。我可以理解第 3 个字节是 \n,但第 4 个字节是什么?

Telnet 实现的“网络虚拟终端”在其控制序列中定义了这些(十进制字符代码):

     Line Feed (LF)         10      Moves the printer to the
                                    next print line, keeping the
                                    same horizontal position.
     Carriage Return (CR)   13      Moves the printer to the left
                                    margin of the current line.

(RFC 854)

请注意,为了将输出位置移动到下一行的开头,需要一个两个字符的序列。传统上,这是 CR LF,但原则上它也可以是 LF CR(但 Telnet 要求 CR 后面不跟 LF 后面跟 NUL)。这样做的结果以及 telnet 协议是对称的事实的结果是 Telnet 在线线路终止符是两个字符序列 CR LF。这就是您所观察到的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2013-03-14
    • 2014-04-11
    • 1970-01-01
    相关资源
    最近更新 更多