x1244

Results 5 comments of x1244

我这里名字还没想好,这个名字太长了。 还有测试还没怎么做,只有IPV4的组播加入和离开试了一下。 如果你着急用,下边这些代码可以加入你程序里,自行编译顶着先。 添加一个头文件或实现文件,或放到`UdpClinet.h`里 ``` int udp_joinmulticastgroupv4(int sockfd, const char* group, const char* local_host) { struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = inet_addr(group); mreq.imr_interface.s_addr = inet_addr(local_host); return setsockopt(sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (const char*)&mreq,...

我已经添加了UDP组播的加入和离开方法,并进行了测试。 PR在 https://github.com/ithewei/libhv/pull/480

IPV4是描述绑定本机IP的地址,是char*。 IPV6是描述绑定本机接口,是ULONG。 这是根据` ip_mreq`、`ipv6_mreq`的不同结构体定义给出的,这样更直接,没有转换。 网上搜到是这个结构体,我就用上了。

这个确实是在UdpServer的基础上添加了joinGroup、leaveGroup两个方法。但是我觉得对于UDP组播来说,接收的不一定是要做为服务器存在,可能它只是建立通道要接收数据,处理并执行,而不是向服务器一样处理后再将数据送出去。 UDP不像TCP一样明显的有服务器-客户端区别,而是更像是生产者-消费者模式,一方负责生产数据,通过UDP点对点或组播将数据发送出去,另一方负责消费数据,接收、处理数据。 所以又起了个名字叫UdpGroup和UdpGroupDest_test,也去掉了UdpServer中直接转发的代码,只是为了使概念更清晰一些,如果说非得必须合并到UdpServer中,我也可以改成那样。 还请您再考虑一下。

现在的IPV6组播在linux和mac/ios上没有通过编译,我也用不到,想把它去掉