2016-11-21 84 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()