【问题标题】:python how to serve multiple tcp clients with input from single udp port?python如何使用来自单个udp端口的输入为多个tcp客户端提供服务?
【发布时间】:2015-08-26 23:09:49
【问题描述】:

我有一个侦听传入数据请求的 python TCP 服务器。一旦有人连接到它,服务器就会开始向该客户端提供数据。它提供的数据通过某个端口上的 UDP 进入。

问题是,如何将来自 UDP 端口的相同数据提供给可能的多个 tcp 客户端?

一些背景信息: 1.创建一个线程来监听传入的UDP数据。 2. 每次有新的 TCP 客户端连接时,都会创建一个新线程。

我查看了 python Queue 包,但似乎这是点对点的,并且对我的目标有限制。

有什么想法吗?

【问题讨论】:

标签: python multithreading sockets tcp


【解决方案1】:

您可以在一个类中隐藏点对点连接,例如:

from multiprocessing import Queue
from threading import Lock

class BroadcastChannel():
  def __init__(self):
    self._queues = []
    self.lock = Lock()
  def send(self, item):
    self.lock.acquire()
    for q in self._queues:
      q.put(item)
    self.lock.release()
  def fork(self):
    q = Queue()
    self.lock.acquire()
    self._queues.append(q)
    self.lock.release()
    return q

【讨论】:

    猜你喜欢
    • 2012-01-04
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 2012-12-18
    相关资源
    最近更新 更多