How to get ip address from sock structure in c?

后端 未结 3 1915
萌比男神i
萌比男神i 2020-12-02 20:06

I\'m writing simple server/client and trying to get client IP address and save it on server side to decide which client should get into critical section. I googled it severa

3条回答
  •  离开以前
    2020-12-02 20:47

    OK assuming you are using IPV4 then do the following:

    struct sockaddr_in* pV4Addr = (struct sockaddr_in*)&client_addr;
    struct in_addr ipAddr = pV4Addr->sin_addr;
    

    If you then want the ip address as a string then do the following:

    char str[INET_ADDRSTRLEN];
    inet_ntop( AF_INET, &ipAddr, str, INET_ADDRSTRLEN );
    

    IPV6 is pretty easy as well ...

    struct sockaddr_in6* pV6Addr = (struct sockaddr_in6*)&client_addr;
    struct in6_addr ipAddr       = pV6Addr->sin6_addr;
    

    and getting a string is almost identical to IPV4

    char str[INET6_ADDRSTRLEN];
    inet_ntop( AF_INET6, &ipAddr, str, INET6_ADDRSTRLEN );
    

提交回复
热议问题