我有 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);
我已尝试设置多播接口,但它不起作用。我知道我可以发送单播,但播放器不支持播放单播视频流
我找到了添加带有本地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);