我被困在这个套接字客户端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()
它给出错误
文件" C:\ Python34 \ lib \ encodings \ utf_8.py",第16行,解码 return codecs.utf_8_decode(input,errors,True) UnicodeDecodeError:' utf-8'编解码器不能解码位置11中的字节0xb3:无效的起始字节
我正在尝试连接到Ananas - Modbus / TCP -server
错误是什么?
谢谢!
答案 0 :(得分:2)
这是因为它试图将data
转换为utf-8字符串(并且包含的某些字节无法在utf-8中表示)。
如果要查看字节数组的十六进制值,可以:
<强> Python3.5 + 强>
data = mySocket.recv(1024)
data.hex()
<强> Othewrise 强>
>>> import binascii
>>> data = mySocket.recv(1024)
>>> data = binascii.hexlify(data).decode()