Mau*_*aus 1 linux ip network-programming multicast
我实现了一个利用多播消息的网络发现过程.它允许发现具有连接到同一段的任何ip地址的特定设备.
客户端A发送多播消息,要求其他客户端.其他客户端使用多播消息"我在这里......"进行响应.基本上这很好用.
但有一个案例让我烦恼.
Client A Client B
192.168.2.5 192.168.2.5
| |
\__________ /
>>>
UDP Multicast Message:
Source: 192.168.2.5 | Destination: 224.0.0.150
Run Code Online (Sandbox Code Playgroud)
可能会出现一致,即发送多播消息的客户端A和客户端B都监听相同的IP地址.在这种情况下,UDP数据包的源地址与目标客户端的IP地址相同.因此,客户端B上的应用程序不接收任何多播消息.
我想具有相同消息的多播消息被阻塞并丢弃在ip-stack中.有没有办法(套接字设置)接收它.
是的,您可以让主机读取自己的多播数据包(通常只是源IP地址上的过滤器),这由IP_MULTICAST_LOOP套接字选项控制.
int loop = 1;
setsockopt(socket, IPPROTO_IP, IP_MULTICAST_LOOP, &loop, sizeof(loop));
Run Code Online (Sandbox Code Playgroud)