【发布时间】:2013-08-27 06:43:54
【问题描述】:
我的应用程序使用 UDP 的多播功能。
简而言之,我正在使用 java 并希望使用单个多播地址和端口传输所有数据。尽管多播侦听器将在逻辑上划分为子组,这些子组可以在运行时更改并且可能不希望处理来自其组之外的数据。
为了实现这一点,我编写了代码,以便应用程序的所有运行实例将加入相同的多播组和端口,但会仔细观察数据包的发送者以确定它是否属于它们的子组。
警告我的应用程序的最小数据包大小为 30000-60000 字节!!!!!
将使用 MulticastSocket.receive(DatagramPacket) 读取每个数据包并确定其所需数据包是否会导致过多开销(甚至缓冲区溢出)。
是否会因为每个数据包都发送给每个人而产生大量流量导致网络拥塞?
【问题讨论】:
-
对于如此大的数据包,您更有可能超出网络设备/适配器的缓冲区大小。许多每个连接只有几 MB,并且系统上有其他流量,您可能会经常溢出缓冲区。我建议您编写应用程序来处理相当高的辍学率。
-
另一种选择是将这些数据包拆分成更小的数据包,传输它们,然后在接收端重新组合它们!
标签: java sockets networking udp multicast