首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组播数据开销?

组播数据开销?
EN

Stack Overflow用户
提问于 2013-08-24 15:03:19
回答 2查看 414关注 0票数 0

我的应用程序使用了UDP的组播功能。

简而言之,我正在使用java,并且希望使用单个多播地址和端口来传输所有数据。尽管多播监听器在逻辑上将被分成子组,这些子组可以在运行时改变,并且可能不希望处理来自其组之外的数据。

为了实现这一点,我编写了代码,以便所有正在运行的应用程序实例都将加入相同的多播组和端口,但将仔细观察数据包的发送者,以确定它是否属于它们的子组。

警告我的应用程序的最小数据包大小是30000-60000字节!

将使用MulticastSocket.receive(DatagramPacket)读取每个数据包,并确定其所需的数据包是否会导致过多的开销(甚至缓冲区溢出)。

是否会因为每个数据包都发送到每个人而产生大量流量,从而导致网络拥塞?

EN

回答 2

Stack Overflow用户

发布于 2013-08-24 15:27:17

由于多播(例如PIM)将构建一个多播树,该树将最佳地放置接收者和发送者,因此并不是每个包都被发送到每个人。因此,网络将在需要时复制数据包。组播数据包在最后一跳被广播(技术上更准确地说,在Layer2处泛洪)。IGMP在最后一跳协助组播,并确保如果在最后一跳中没有接收器加入,则不会进行这种泛洪。

“并且可能不希望处理来自其组外的数据。”接收调用将返回下一个接收到的数据报,因此几乎不能避免处理不是用于子组分类的分组。您的应用程序不能使用不同的多个组吗?

票数 1
EN

Stack Overflow用户

发布于 2013-08-24 15:07:42

每个数据包都可以发送给每个人,但每个数据包只会在网络上出现一次。

但是,除非该应用程序完全运行在一个完全由您控制的LAN中,包括所有路由器,否则它已经非常不可行了。通常接受的最大UDP数据报大小是534,一旦您通过您不能控制的路由器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18415966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档