Добавляет ли telnet дополнительные байты при отправке данных? - PullRequest
0 голосов
/ 13 сентября 2018

Я отправляю команду из telnet и получаю ее, используя свой собственный сервер, используя команду сокета recv ().Если я отправлю «аа», получится 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'

1 Ответ

0 голосов
/ 13 сентября 2018

Я отправляю команду из telnet и получаю ее, используя мой собственный сервер, используя команду сокета recv (). Если я отправлю «аа», получится 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. Это то, что вы наблюдаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...