我们正在通过UDP多播收听股票快照数据。但是,套接字可以接收数据的速度似乎有限制。
while 1:
start1 = time.clock()
SocketData = Msocket.recv(4096)
end1 = time.clock()
counter += 1
我创建了一个每1秒运行一次的调度程序,并计算收到的data
的数量,范围从100到300但不是更多。我有一个记录的饲料,我每秒可以投入数千次爆发,但它不会因为低于以下的速率而达到峰值
175
172
190
此套接字是否有吞吐量限制?此外,没有显示数据包丢失。我应该使用不同的配置吗?
以下是正在使用的配置。
def prepare(self):
self.BroadCastSocket = socket.socket(socket.AF_INET,
socket.SOCK_DGRAM,
socket.IPPROTO_UDP)
self.BroadCastGroup = socket.inet_aton(self.MCAST_ADDR)
self.InterfaceIp = socket.inet_aton(self.MCAST_IP)
self.MultiCastRequest = struct.pack('=4s4s',
self.BroadCastGroup,
self.InterfaceIp)
self.BroadCastSocket.setsockopt(socket.IPPROTO_IP,
socket.IP_ADD_MEMBERSHIP,
self.MultiCastRequest)
self.BroadCastSocket.setsockopt(socket.SOL_SOCKET,
socket.SO_REUSEADDR,
1)
def bind(self):
self.BroadCastSocket.bind(('0.0.0.0', self.MCAST_PORT))