python如何使用单个udp端口输入多个tcp客户端?

时间:2015-08-26 23:09:50

标签: python multithreading sockets tcp

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

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

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

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

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您可以隐藏类中的点对点连接,例如:

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