2015-05-12 2 views
1
сценария

Мой Python, как показано ниже (конфиденциальные данные удалены в случае необходимости)TCP Receive в Python, чтение данных из

import socket 

class TCPConnection: 
    def __init__(self, sock=None): 
     if sock is None: 
      self.sock = socket.socket(
          socket.AF_INET, socket.SOCK_STREAM) 
     else: 
      self.sock = sock 

    def connect(self, host, port): 
     try: 
      self.sock.connect((host, port)) 
      print('Successful Connection') 
     except: 
      print('Connection Failed') 

    def readlines(self): 
     data = self.sock.recv(1024) 
     print(data) 


if __name__ == '__main__' : 
    listen = TCPConnection() 
    listen.connect('**.**.**.**',##) 
    listen.readlines() 

Я получаю следующий вывод.

Successful Connection 
b'\x01\x00\xc7\x00\x08\x01\x07\t\x00\x00\x00\x03=' 

Что мне теперь нужно сделать, чтобы сделать вывод на печать с функцией readlines() более дружественной? По внешнему виду, я знаю, что это в байтах, но кроме того, я потерян.

Вся помощь изящно получена.

+1

Вы пытались использовать .decode()? data = self.sock.recv (1024) .decode() –

+0

привет Габриэль, уже пробовал, что я получаю '' utf-8 'кодек не может декодировать байт 0xcd в позиции 2: недопустимый байт продолжения'а моя ошибка сообщение – oliversarfas

+1

indeeed - не строка utf-8. Что представляет эта строка и что именно вы подразумеваете под «frendly»? –

ответ

1

Вы можете расшифровать сообщение перед печатью:

def readlines(self): 
    data = self.sock.recv(1024).decode() 
    print(data) 

но все же, пожалуйста, считают, что ваши данные не «ASCII» или «UTF-8».

+0

Thanks Gabriel. Очень питонический ответ. – oliversarfas

+0

@oliversarfas Спасибо, что приняли этот ответ: D –

Смежные вопросы