从套接字初始读取Python会返回一些意外字符

时间:2011-12-01 02:50:29

标签: python sockets

我有一个Python套接字服务器,我试图一次从一行读取文本命令,代码如下。第一次运行时,line包含在数据之前看起来像一些垃圾字符的内容。在后续的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 个答案:

答案 0 :(得分:1)

在这种情况下,您需要确保并使用“RAW”模式。否则,您的telnet客户端正在尝试发现并与telnet服务器协商。有关详细信息,请参阅此链接:

3.6 Making raw TCP connections

您也可以在Telnet设置区域中将“Telnet协商模式”切换为被动模式。