2016-11-21 54 views
0

,这是我的客户:Python的检查UDP消息

import socket 
import threading 

class ThreadedServer(object): 
    def __init__(self, host, port): 
     self.host = host 
     self.port = port 
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
     self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 
     self.sock.bind((self.host, self.port)) 

    def listen(self): 
     self.sock.listen(5) 
     while True: 
      client, address = self.sock.accept() 
      client.settimeout(60) 
      threading.Thread(target = self.listenToClient,args = (client,address)).start() 

    def listenToClient(self, client, address): 
     size = 1024 
     while True: 
      try: 
       data = client.recv(size) 
       if data: 
        # Set the response to echo back the recieved data 
        response = data 
        client.send(response) 
       else: 
        raise error('Client disconnected') 
      except: 
       client.close() 
       return False 

if __name__ == "__main__": 
    ThreadedServer('',5000).listen() 

我试图解析接收到的消息。我曾尝试以下: 如果数据:

  if data == "command": 
       print("Command Received") 
      elif data != "command": 
       response = data 
       client.send(response) 
     else: 
      raise error('Client disconnected') 

我已经打印的数据来安慰和它出来为b'command',我一直在使用,在相同字符串,它仍然无法打印“命令receieved”尝试当我从我的客户端发送它只连接到服务器,并发送消息做以下mySocket.send(message.encode())我想知道如何解决我的问题?

回答

0

刚刚找到解决方案:打印时必须解码UDP消息。

实施例:

print data.decode()