using second AF_INETXx seems more robust approach, thank you. On 9/19/16, Ben Noordhuis <[email protected]> wrote: > On Mon, Sep 19, 2016 at 4:46 AM, kang joni <[email protected]> wrote: >> how to check if client is connected using ipv4 or ipv6 in libuv? >> I have this code, >> >> struct sockaddr_storage cp; >> int ilen=sizeof(cp); >> uv_tcp_getpeername((uv_tcp_t*)client, (struct sockaddr*)&cp,&ilen); >> int ret=uv_ip6_name((const struct >> sockaddr_in6*)&cp,(char*)ipname,sizeof(ipname)); >> //I don't think this is correct, but I haven't any clues >> if (retip<0 || std::string("::")==ipname) >> { >> retip=uv_ip4_name((const struct sockaddr_in*)&cp,(char*)ipname, >> sizeof(ipname)); >> >> } >> >> any corrections ? thanks > > You can simply check if ilen == sizeof(struct sockaddr_in) or ilen == > sizeof(struct sockaddr_in6) but a more thorough solution is to check > the address family: > > struct sockaddr *sa = (struct sockaddr *) &cp; > switch (sa->sa_family) { > case AF_INET: /* ... */; break; > case AF_INET6: /* ... */; break; > } > > -- > You received this message because you are subscribed to a topic in the > Google Groups "libuv" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/libuv/npXnJIDdKMo/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/libuv. > For more options, visit https://groups.google.com/d/optout. >
-- You received this message because you are subscribed to the Google Groups "libuv" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/libuv. For more options, visit https://groups.google.com/d/optout.
