Rules of thumb (2) Use struct sockaddr if it is a pointer. Use struct sockaddr_storage if it is an actual variable. Never use sockaddr as placeholder, because sockaddr_in6 is larger. Be careful about sizeof(struct sockaddr_in) or sizeof(sa) "sa_len" should be used in most occasions Linux/Solaris is a problem - maybe use SA_LEN? ai_addrlen can be used when you use getaddrinfo(). Use getaddrinfo() and getnameinfo() throughout the system