Python3套接字客户端发送和接收十六进制字符串
问题描述:
我被困在此套接字客户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
什么是错误?
谢谢!
答
这是因为它试图将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()