This document discusses different combinations of IPv4 and IPv6 clients and servers and how they can communicate. It covers:
- An IPv6 dual stack server that can handle both IPv4 and IPv6 clients using IPv4-mapped IPv6 addresses.
- An IPv6 client connecting to an IPv4 server by using IPv4-mapped addresses returned by gethostbyname.
- Macros and socket options for determining address types and converting between IPv4 and IPv6 sockets.
- Using getaddrinfo and getnameinfo for more portable source code across IPv4 and IPv6.