libhv
libhv copied to clipboard
multicast support
请添加组播功能支持
please add support to multicast utility func like this
bool is_multicast_addr(const char* addr)
{
//ipv4 only
addr = ntohl(inet_addr(addr));
return (addr >> 28) == 0xE;
}
// IP_MULTICAST_IF
HV_INLINE int set_ip_multicast_if(SOCKET sock, const char* ifaddr)
{
struct in_addr addr;
addr.s_addr = inet_addr(ifaddr);
return setsockopt(sock, IPPROTO_IP,IP_MULTICAST_IF,(void *)&addr,sizeof(addr));
}
// IP_ADD_MEMBERSHIP
HV_INLINE int join_group(SOCKET sock, const char* gaddr, const char* ifaddr)
{
struct ip_mreq mreq= {0};
mreq.imr_multiaddr.s_addr = inet_addr(gaddr);
mreq.imr_interface.s_addr = inet_addr(ifaddr);
return setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, (void *)&mreq, sizeof(mreq));
}
also IP_DROP_MEMBERSHIP, IP_ADD_SOURCE_MEMBERSHIP, IP_DROP_SOURCE_MEMBERSHIP, IP_MULTICAST_TTL, IP_MULTICAST_LOOP
我没有开发过组播相关的业务,对这块不是很熟,如果你需要的话,可以提PR