【问题标题】:Sending data through socket without dependency of receiving data通过socket发送数据,不依赖接收数据
【发布时间】:2015-11-14 07:24:29
【问题描述】:
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)

这段代码在一个线程上运行,代码的问题是recv阻塞了线程,所以我只能在收到1024字节的数据时才可以sendMessage(),我想在任何时候发送数据,即使在迭代中1024 字节未完全接收。

我该怎么做? 谢谢。

【问题讨论】:

  • 如果你不想依赖,为什么要在同一个线程中发送和接收?
  • 在recv被阻塞时,我可以使用socket发送吗?
  • 是的,你可以。这两个方向是独立的通道。
  • 如果我有两个线程,一个发送一个接收,我不需要同步套接字,对吗?
  • 是否需要同步它们取决于应用程序。如果您的应用程序不需要同步,您可以在不同的线程中进行同步。

标签: python sockets


【解决方案1】:

如果应用程序不需要您同步它们,请在不同的线程中进行发送和接收。一个线程的每个方向都是独立的,在一个线程中发送而另一个线程在recv()中阻塞是没有问题的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-13
    • 2020-06-23
    • 1970-01-01
    • 2023-04-04
    • 2023-04-11
    • 1970-01-01
    • 2014-10-27
    • 1970-01-01
    相关资源
    最近更新 更多