2011-12-01 49 views
0

我有一个Python套接字服务器,我试图从一行读取文本命令,代码如下。第一次运行时,行包含数据之前的一些垃圾字符。在随后的readline调用中,我得到了从telnet客户端(Putty)输入的确切数据。为什么我会得到这些头几个明显的垃圾字符。例如。如果我在_return_类型,线路包含\u18\u01\u03d\r\n '从套接字初始读取Python返回一些意外字符

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

你需要确保在这种情况下使用‘原始’方式。否则,您的telnet客户端正在尝试发现并与telnet服务器进行协商。请参阅此链接的详细信息:

3.6 Making raw TCP connections

你也许可以切换“telnet协商模式”,以被动的Telnet设置面积过。