繁体   English   中英

在同一端口上绑定两个多播套接字

[英]Binding two multicast sockets on the same port

我正在尝试从同一台计算机上的两个不同进程中加入两个不同的多播组:

  • 进程A加入224.1.1.100端口10000
  • 进程B尝试加入224.1.1.101端口10000

进程A从224.1.1.100:10000获取数据就好了。

问题是进程B没有从224.1.1.101:10000接收流量-而是从进程A的联接接收流量(224.1.1.100:10000)

这两个进程的基础代码使用的是Boost Asio。 每个进程都将套接字打开到同一端口10000。但是,每个进程都将联接发送到单独的多播组(进程A至224.1.1.100,进程B至224.1.1.101)。

关键问题似乎是两个进程将套接字打开到同一端口。 鉴于必须侦听两个多播组(224.1.1.100和224.1.1.101)上的相同端口,我该如何进行这项工作?

流程示例代码:


listenInterface( boost::asio::ip::address::from_string( "0.0.0.0" ) ),
localEndpoint = boost::asio::ip::udp::endpoint( listenInterface, 10000 );
socket.bind( localEndpoint );
socket.set_option( boost::asio::ip::multicast::join_group( boost::asio::ip::address::from_string( "224.1.1.100" ) ) );

流程B示例代码:


listenInterface( boost::asio::ip::address::from_string( "0.0.0.0" ) ),
localEndpoint = boost::asio::ip::udp::endpoint( listenInterface, 10000 );
socket.bind( localEndpoint );
socket.set_option( boost::asio::ip::multicast::join_group( boost::asio::ip::address::from_string( "224.1.1.101" ) ) );

我想到了。 根本原因不是在两个进程之间使用唯一的listenInterface。 通过将绑定上使用的listenInterface切换到本地端点,我可以使它工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM