UDP 多播不适用于 linux Debian
UDP Multicast is not working for linux Debian
您好,我的 C++ 代码或 Linux Debian 环境中存在 UDP 多播问题。
我正在使用 boost 1.67.
注意: 我在 Windows 和 Linux 中都使用了我的代码。但是在 Linux 中它不起作用,但在 Windows 中它起作用。
我可以在 Debian 中看到带有 netcat 的多播包,所以多播流就在那里!网卡上启用了多播。
所以我相信我的代码有效,但不适用于 Linux.....这可能是一个提升问题吗?
我的传入流量接口的 IP 为 192.168.0.1,我使用的多播地址为 239.16.33.1,端口为 20001。
---Initialize_Source
...
Socket->async_receive(
boost::asio::buffer(Read_Buffer, MAX_LENGTH),
boost::bind(&Udp_Transport::Handle_Receive_From, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)
);
...
---Join_Multicast_Group
// allow other to be bound to the same address.
Socket->set_option(boost::asio::ip::udp::socket::reuse_address(true));
// Join the multi cast group.
Socket->set_option(boost::asio::ip::multicast::join_group(Multicast_Address));
Socket->set_option(boost::asio::ip::multicast::hops(64));
这里没有太多可能出错的地方,但任何提示都会对我有很大帮助!
/H
实际上我发现如果我将多播端口绑定到网卡 IP 192.168.0.1 那么它只在 Windows 中有效。但是,如果我将多播端口绑定到 IP 0.0.0.0,它也可以在 Linux 中工作。
然后我加入了这个小组:
套接字->set_option(boost::asio::ip::multicast::join_group(Multicast_Address));
您好,我的 C++ 代码或 Linux Debian 环境中存在 UDP 多播问题。 我正在使用 boost 1.67.
注意: 我在 Windows 和 Linux 中都使用了我的代码。但是在 Linux 中它不起作用,但在 Windows 中它起作用。 我可以在 Debian 中看到带有 netcat 的多播包,所以多播流就在那里!网卡上启用了多播。 所以我相信我的代码有效,但不适用于 Linux.....这可能是一个提升问题吗?
我的传入流量接口的 IP 为 192.168.0.1,我使用的多播地址为 239.16.33.1,端口为 20001。
---Initialize_Source
...
Socket->async_receive(
boost::asio::buffer(Read_Buffer, MAX_LENGTH),
boost::bind(&Udp_Transport::Handle_Receive_From, this, boost::asio::placeholders::error, boost::asio::placeholders::bytes_transferred)
);
...
---Join_Multicast_Group
// allow other to be bound to the same address.
Socket->set_option(boost::asio::ip::udp::socket::reuse_address(true));
// Join the multi cast group.
Socket->set_option(boost::asio::ip::multicast::join_group(Multicast_Address));
Socket->set_option(boost::asio::ip::multicast::hops(64));
这里没有太多可能出错的地方,但任何提示都会对我有很大帮助!
/H
实际上我发现如果我将多播端口绑定到网卡 IP 192.168.0.1 那么它只在 Windows 中有效。但是,如果我将多播端口绑定到 IP 0.0.0.0,它也可以在 Linux 中工作。 然后我加入了这个小组: 套接字->set_option(boost::asio::ip::multicast::join_group(Multicast_Address));