Первоначальное чтение Python из сокета возвращает неожиданные символы - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть сервер сокетов Python, который я пытаюсь читать текстовые команды из строки за раз, код ниже.При первом запуске строка содержит то, что перед данными выглядит как символы мусора.При последующих вызовах readline я получаю точные данные, которые я набрал, из клиента telnet (Putty).Почему я получаю эти первые несколько очевидных мусорных персонажей.Например, если я наберу _return_, строка будет содержать \u18\u01\u03d\r\n '

    HOST = ''
    PORT = 27001
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((HOST, PORT))
    s.listen(1)
    while True:
        conn, address = s.accept()
        print 'Got new CLI connection'
        f = conn.makefile()
        f.flush()
        while True:
            try:
                self.PrintBanner(conn)
                self.PrintMenu(conn)
                line = f.readline()
                if line.lower()[:1] == 'd':
                    self.MenuFieldRequestStatus(conn)
                    f.readline()
            except:
                s.close()

1 Ответ

1 голос
/ 01 декабря 2011

В этом случае вам необходимо убедиться, что вы используете режим «RAW».В противном случае ваш клиент telnet пытается обнаружить и согласовать его с сервером telnet.См. Эту ссылку для получения дополнительной информации:

3.6 Создание необработанных TCP-соединений

Возможно, вы также можете переключить "Режим согласования Telnet" на пассивный в области настроек Telnet.

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