Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 通过套接字发送数据而不依赖于接收数据_Python_Sockets - Fatal编程技术网

Python 通过套接字发送数据而不依赖于接收数据

Python 通过套接字发送数据而不依赖于接收数据,python,sockets,Python,Sockets,这段代码是在线程上运行的,代码的问题是recv阻塞了线程,因此我只能在收到1024字节的数据时发送消息(),我想在任何时候发送数据,即使在1024字节未完全接收的迭代中也是如此 我该怎么做? 谢谢。如果应用程序不需要同步,请在不同的线程中执行发送和接收。一个线程的每个方向都是独立的,当另一个线程在recv()中被阻止时,在一个线程中发送是没有问题的。如果不需要依赖项,为什么要在同一个线程中发送和接收?在recv中被阻止时,我可以使用套接字发送吗?是的,可以。这两个方向是独立的通道。如果是这样,我

这段代码是在线程上运行的,代码的问题是recv阻塞了线程,因此我只能在收到1024字节的数据时发送消息(),我想在任何时候发送数据,即使在1024字节未完全接收的迭代中也是如此

我该怎么做?
谢谢。

如果应用程序不需要同步,请在不同的线程中执行发送和接收。一个线程的每个方向都是独立的,当另一个线程在
recv()中被阻止时,在一个线程中发送是没有问题的。如果不需要依赖项,为什么要在同一个线程中发送和接收?在recv中被阻止时,我可以使用套接字发送吗?是的,可以。这两个方向是独立的通道。如果是这样,我就不需要同步套接字。如果我有两个线程,一个发送,一个接收,是否正确?是否需要同步取决于应用程序。如果应用程序不需要同步,可以在不同的线程中进行同步。
def run(self):
    while True:
        if not self.MessagesQueue.empty():
            self.sendMessage()                         
        response=self.s.recv(1024).decode("utf-8")
            self.processResponse(response)
        time.sleep(1)
def addMessageToQueue(self,message): #called from main thread
    self.MessagesQueue.put(message)