libhv icon indicating copy to clipboard operation
libhv copied to clipboard

multicast support

Open rorschach-py opened this issue 3 years ago • 1 comments

请添加组播功能支持

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

rorschach-py avatar Sep 03 '22 02:09 rorschach-py

我没有开发过组播相关的业务,对这块不是很熟,如果你需要的话,可以提PR

ithewei avatar Sep 04 '22 16:09 ithewei