发送多播但只有本地可以读取

问题描述 投票:0回答:1

我有 2 台不同的机器示例是 192.168.11.115 和 192.168.11.114 机器192.168.11.114将发送视频流到组播地址239.0.0.1和端口1234 我希望机器 192.168.11.115 无法从上面的多播地址读取,只有 192.168.11.114 可以读取它

我使用 libuv 和 c++

这是我用来将视频流发送到多播地址的代码

struct sockaddr_in send_addr;
uv_ip4_addr("239.0.0.1", 1234, &send_addr);

uv_buf_t buf = uv_buf_init((char*)message, len);

uv_udp_send_t* send_req = new uv_udp_send_t;
uv_udp_send(send_req, &_udpSend, &buf, 1, reinterpret_cast<const struct sockaddr*>(&send_addr), on_send);

这是我初始化uv_udp_t

status = uv_udp_init(_loop, &_udpSend);
struct sockaddr_in send_addr;
uv_ip4_addr("0.0.0.0", 1111, &send_addr);
uv_udp_bind(&_udpSend, (const struct sockaddr*)&send_addr, UV_UDP_REUSEADDR);
// uv_udp_set_multicast_interface(&_udpSend, "192.168.11.114");
// uv_udp_set_membership(&_udpSend, "239.0.0.1", "192.168.11.114", UV_JOIN_GROUP);
uv_udp_recv_start(&_udpSend, on_alloc, on_recv);

我已尝试设置多播接口,但它不起作用。我知道我可以发送单播,但播放器不支持播放单播视频流

c++ multicast libuv
1个回答
0
投票

我找到了添加带有本地IP的多播接口的解决方案,使多播仅适用于本地IP

uv_udp_set_multicast_interface(&_udpSend, "127.0.0.1");
uv_udp_set_membership(&_udpSend, "239.0.0.1", "127.0.0.1", UV_JOIN_GROUP);
© www.soinside.com 2019 - 2024. All rights reserved.