gpt4 book ai didi

python - socket sendall() 不发送数据

转载 作者:太空宇宙 更新时间:2023-11-03 18:16:11 25 4
gpt4 key购买 nike

我有这个代码。它不是完整的代码,因为它是一个 Blender 插件,有许多与套接字无关的行,所以我在这里只给出处理套接字的部分,我将其与程序的其余部分隔离。

如果您想查看完整代码,可以在这里找到

http://pastebin.com/iqN7tr8E

def create_thread():

global threadSocket,listening
threadSocket = threading.Thread(name='threadSocket', target= socket_listen)
listening = True
create_socket_connection()
threadSocket.start()


def socket_listen():
global receivedSocket,listening, receivedData,socketServer, socketMessages, pherror
socketServer.listen(5)

while listening:
(receivedSocket , adreess) = socketServer.accept()
receivedData = (receivedSocket.recv(1024)).decode("utf-8")[:-2]

socketMessages.append(receivedData)
receivedSocket.sendall('Hello from Blender!\n')
receivedSocket.close()




def create_socket_connection():
global socketServer
socketServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socketServer.bind(('127.0.0.1',4000))

我正在使用telnet来测试套接字,telnet 127.0.0.1 4000,telnet可以发送数据但从不接收任何数据。正如您所看到的,我的套接字在其自己的线程内阻塞,因此它不会阻塞整个程序的执行。我假设 sendall 尝试发送所有内容,但由于某种原因它无法连接回 telnet 进行发送。我在这里做错了什么吗?

最佳答案

以下行将引发错误,因为没有根据给定代码定义 socketMessages

socketMessages.append(receivedData)

上一行的异常将阻止下一行的执行(sendall)。

要解决此问题,请将 socketMessages 定义为列表或删除上面的行。

<小时/>

更新后看到OP的评论:

socket.sendall接受字节字符串(Python 2.x 中为 str,Python 3.x 中为 bytes)。在 Python 3.x 中,您应该使用字节文字,如下所示。

receivedSocket.sendall(b'Hello from Blender!\n')

关于python - socket sendall() 不发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24969483/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com