1

我被困在这个套接字客户端 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 行,解码返回 codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb3 in position 11:无效的起始字节

我正在尝试连接到Ananas - Modbus/TCP -server

错误是什么?

谢谢!

4

1 回答 1

3

这是因为它尝试转换data为 utf-8 字符串(并且其中包含的某些字节无法用 utf-8 表示)。

如果要查看字节数组的十六进制值,可以:

Python3.5+

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

其他

>>> import binascii
>>> data = mySocket.recv(1024)
>>> data = binascii.hexlify(data).decode()
于 2017-04-02T01:48:28.490 回答