python2 socket.send to python3

问题描述 投票:0回答:0

我有一个脚本在 python2 脚本中使用模块套接字。 我想将它升级为 python3 脚本。

搜索Python3和Python2的区别-socket.send dataPython socket.send encoding后,我没有成功升级到python3。

类似的帖子 TypeError: a bytes-like object is required, not 'str' 描述了方法

sendto
似乎在 python3 中工作,但我没有这个例子的端口...

这里是连接方法:

def connect(self):
    sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
    sys.stderr.write("Waiting for connect to %s\n" % (self.uds_filename,))
    while 1:
        try:
            sock.connect(self.uds_filename)
        except socket.error as e:
            if e.errno == errno.ECONNREFUSED:
                time.sleep(0.1)
                continue
            sys.stderr.write("Unable to connect socket %s [%d,%s]\n"
                             % (self.uds_filename, e.errno,
                                errno.errorcode[e.errno]))
            sys.exit(-1)
        break
    print("CONNECTED")
    self.webhook_socket = sock

这是发送方法:

def send(self, message):
    self.webhook_socket.send("%s\x03" % (message))  # message is type 'str'

问题是:如何正确翻译。它被发送到 Klipper 服务(3D 打印),我不想改变服务器端,只有客户端(这两种方法)到 python3。

此工作脚本可在https://github.com/Klipper3d/klipper/blob/master/scripts/whconsole.py

因为此脚本与特定硬件(3D 打印机)交互,所以我将测试您的答案。我通过测试 python3 的解决方案遇到的问题是没有任何错误的答案......

python-3.x sockets python-2.x
© www.soinside.com 2019 - 2024. All rights reserved.