微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

应用程序接收不需要的多播stream量

我有以下情况; 主机HostRec:

1)主机的NIC bond0已经join了多播组multicast1和multicast2 – 因为应用程序已经请求了它。 2)我在同一主机HostRec上启动一个多播监听应用程序,该监听多播3和UDP端口3的stream量。 3)我在另一个主机HostSend上启动一个组播发送应用程序。

在这一点上,我有以下3种情况:

a)如果步骤3的发送应用程序在多播地址multicast3和udp port3上发布,那么在步骤2上启动的侦听应用程序正确接收消息。 这是预期的行为。

Linux如何知道要调用哪个ioctl函数

设备驱动程序充当虚拟networking摄像头

块级磁盘caching,如何查找文件系统请求的块的逻辑块地址

为什么mm_struct-> start_stack和vm_area_struct-> start不指向相同的地址?

在Linux上 – 将最大打开的文件设置为无限制。 可能?

b)如果多播发送应用程序在多播2和端口3上发布消息,则这些消息仍然由在步骤2上启动的侦听应用程序接收。 如果多播发送应用程序在多播1和端口3上发布消息,则会发生同样的行为。 这种行为是错误的。

c)如果发送应用程序(步骤3)开始在多播地址multicast4和udp端口3上发布(HostRec上的NIC bond0尚未join此多播组),则在步骤2启动的侦听应用程序正确无法接收消息。 这也是预期的行为。

你可以build议如果在主机的多播内核configuration中有任何错误吗?

uname -a Linux HostRec 2.6.18-164.2.1.el5#1 SMP Mon Sep 21 04:37:42 EDT 2009 x86_64 x86_64 x86_64 GNU / Linux

谢谢,sommario

O_APPEND标志和lseek

注册端口重组错误的nf_conntrack_helper_register

TCP_NEW_SYN_RECV是什么意思?

copyLZFileName / CreateLZFileName .. LZ是什么意思?

劫持系统调用

这是预期的行为,尽管起初看起来有点奇怪。 虽然你认为你是绑定到一个多播组/端口,你真正在做什么是:

绑定到接口上的UDP端口。

将此接口订阅给定的多播组。

这两个行动是相当独立的。 第一个的结果是你的进程将接收所有的数据包(多播或不是),UDP是目的地为您的端口/接口。 第二个结果是确保发往给定多播地址的数据包(由网络路由器)发送到您的接口。

大多数人不希望这样,实际上他们只想接收单个多播组的数据,而不想担心网络上发生了什么。 实现此目的的最好方法是确保一个端口仅用于一个多播组。 通常的做法是使用多播组的最后一个字节作为端口的最不重要的八位字节。 例如224.0.0.22 / port 19022和224.0.0.150/19150。 这样,你永远不会得到错误的数据(只要没有人是UDP单播数据到这些端口)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐