我正在研究一些使用 IGMP 加入加入多播组的代码
struct ip_mreq mreq;
inet_pton(AF_INET, group, &mreq.imr_multiaddr.s_addr);
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
if (setsockopt(fd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq, sizeof(mreq)) < 0)
throw std::runtime_error(perror("setsockopt(IP_ADD_MEMBERSHIP)"));
当应用程序关闭时,它会关闭套接字
close(fd);
但是,它不执行IP_DROP_MEMBERSHIP
.
- 上游路由器是否会继续将多播传送到我的网络接口?
- 操作系统(在我的情况下是 Linux)是否足够智能,可以在套接字关闭时为我发送删除会员请求?