2016-11-21 4 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', я попытался использовать это в равной строке, и он по-прежнему не печатает «Command receieved» когда я отправляю его от моего клиента, который просто подключается к серверу и отправляет сообщение, следующее mySocket.send(message.encode()) Мне было интересно, как я могу исправить свою проблему?

ответ

0

Только что нашел решение: вы должны декодировать UDP-сообщение при его печати.

Пример:

print data.decode() 
Смежные вопросы