Я пытаюсь объединить две разные группы многоадресной рассылки из двух разных процессов на одной машине:
- Процесс A присоединяется к порту 224.1.1.100 10000
- Процесс B пытается присоединиться к порту 224.1.1.101 10000
Процесс А получает данные из 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)?
Обработать пример кода:
<code>
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:
<code>
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" ) ) );