Python 多播是否适用于本地主机内的一对多流?
我有一个中央数据源,我想重新分发给许多客户。数据馈送产生约1.8 kB/s。目前,我正在将提要写入一个文件,每个客户机读取文件的结尾。这似乎有点不对劲。这是我现在拥有的伪代码 提要:Python 多播是否适用于本地主机内的一对多流?,python,sockets,multicast,Python,Sockets,Multicast,我有一个中央数据源,我想重新分发给许多客户。数据馈送产生约1.8 kB/s。目前,我正在将提要写入一个文件,每个客户机读取文件的结尾。这似乎有点不对劲。这是我现在拥有的伪代码 提要: o = open('feed.txt','a',0) #no buffering, maybe line buffer would be better while 1: data = feed.read(8192) data = parse_data(data) o.write(data)
o = open('feed.txt','a',0) #no buffering, maybe line buffer would be better
while 1:
data = feed.read(8192)
data = parse_data(data)
o.write(data)
time.sleep(0.01)
服务器(每个客户端在新线程中连接):
我想做的是用套接字替换文件,并将消息直接写入多播数据包。每当一个新的客户端连接到服务器时,我只需启动一个新线程并开始侦听多播数据包。是否有任何标准的设计模式来处理这种情况?更简单的是,只需让所有客户端在同一端口上多播。这样,您的服务器甚至不需要跟踪伪连接 基于多播在我们的网络基础设施上“最可靠”的事实,我们对内部网络上的一些软件使用了类似的方案。我们已经对负载进行了压力测试,直到每秒有超过30K的消息时才开始丢弃数据包
#!/usr/bin/python
import sys
import socket
ADDR = "239.239.239.9"
PORT = 7999
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((ADDR,PORT))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
while True:
data, addr = sock.recvfrom(2048)
print data
sys.stdout.flush()
#!/usr/bin/python
import sys
import socket
ADDR = "239.239.239.9"
PORT = 7999
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind((ADDR,PORT))
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
while True:
data, addr = sock.recvfrom(2048)
print data
sys.stdout.flush()