2017-04-02 67 views
1

我被困在此套接字客戶Python3代碼:Python3套接字客戶端發送和接收十六進制字符串

import socket 
import codecs 

def Main(): 
     host = '127.0.0.2' 
     port = 502 

     mySocket = socket.socket() 
     mySocket.connect((host,port)) 

     message = codecs.encode('\x00\x00\x00\x00\x00\x06\x01\x04\x00\x01\x00\x02') 

     mySocket.send(message) 
     data = codecs.decode(mySocket.recv(1024)) 

     print ('Received from server: ' + data) 


     mySocket.close() 

if __name__ == '__main__': 
    Main() 

它給

File "C:\Python34\lib\encodings\utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 11: invalid start byte

我試圖連接到Ananas錯誤 - 的Modbus/TCP -server

什麼是錯誤?

謝謝!

回答

1

這是因爲它試圖將data轉換爲utf-8字符串(並且包含的​​某些字節不能用utf-8表示)。

如果你想看到一個字節數組,你可以的hexadecial值:

Python3.5 +

data = mySocket.recv(1024) 
data.hex() 

Othewrise

>>> import binascii 
>>> data = mySocket.recv(1024) 
>>> data = binascii.hexlify(data).decode() 
相關問題