【问题标题】:Python3 socket client to send and receive hex stringPython3套接字客户端发送和接收十六进制字符串
【发布时间】:2017-08-27 01:43:42
【问题描述】:

我被困在这个套接字客户端 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(输入,错误,真) UnicodeDecodeError:“utf-8”编解码器无法解码位置 11 中的字节 0xb3:无效的起始字节

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

什么是错误?

谢谢!

【问题讨论】:

    标签: python python-3.x sockets hex modbus-tcp


    【解决方案1】:

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

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

    Python3.5+

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

    其他

    >>> import binascii
    >>> data = mySocket.recv(1024)
    >>> data = binascii.hexlify(data).decode()
    

    【讨论】:

      猜你喜欢
      • 2012-06-03
      • 1970-01-01
      • 1970-01-01
      • 2015-11-11
      • 1970-01-01
      • 2017-07-22
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      相关资源
      最近更新 更多