gpt4 book ai didi

python - 保持套接字在线程中打开,并从Main发送命令

转载 作者:行者123 更新时间:2023-12-03 11:53:19 25 4
gpt4 key购买 nike

我需要在新线程中打开套接字连接。该连接需要保持打开状态。然后,我需要能够将数据从主作用域发送到套接字。

我感觉我的代码发生了什么事,就是线程正在立即完成并关闭套接字,然后没有属性可以将数据发送到该套接字。

我如何保持线程和套接字打开以接收要从主作用域发送出去的数据?

(如果我从中删除线程,它可以正常工作。)

以下是我正在使用的代码和输出。

这是 shell 程序的输出:

$ python test.py 
Traceback (most recent call last):
File "test.py", line 25, in <module>
packet = mt.sendData('somedata')
File "test.py", line 19, in sendData
self.mySocket.send(myString)
AttributeError: 'NoneType' object has no attribute 'send'

这是代码

注意第19行是: self.mySocket.send(myString)第25行是: packet = mt.sendData('somedata')
import threading
import socket

class MyTest(threading.Thread):
def __init__(self, host, port):
self.host = host
self.port = port
self.mySocket = None
threading.Thread.__init__(self)

def run(self):
#open socket
self.mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.mySocket.connect( ( self.host, self.port ) )
self.mySocket.setblocking(1)

def sendData(self, myString):
# send data to socket
self.mySocket.send(myString)
packet = self.mySocket.recv(4096)


mt = MyTest('127.0.0.1', 50001)
mt.start()
packet = mt.sendData('somedata')

最佳答案

您可能会发现this post中的示例很有用-它演示了执行套接字通信的线程,该线程通过Queue对象接收来自另一个线程的命令。这是一个相当普通的示例,有据可查(包括评论和链接的博客文章),您可以轻松地将其调整以用于任何特定目的。

关于python - 保持套接字在线程中打开,并从Main发送命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8273297/

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