2017-04-02 18 views
1

私はこのソケットクライアントのpython3のコードで立ち往生しています:のpython3ソケットクライアントは、16進文字列の送受信に

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() 

それは私がAnanasに接続しようとしています

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

エラーになります - の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() 
関連する問題