Při práci s adresami IPv4 i IPv6 velmi často potřebujeme převést jejich čitelnou textovou reprezentaci (např. 1.2.3.4 nebo fe80::1234) do číselné binární formy anebo naopak. Tomuto účelu slouží následující dvě funkce:
int inet_pton(int af, const char *src, void *dst); const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
Funkce inet_pton převádí textovou reprezentaci adresy na binární a inet_ntop binární na textovou. Binární reprezentace je vždy v síťovém pořadí bajtů (NBO).
Argument af
specifikuje adresovou rodinu (AF_INET
nebo AF_INET6
) a argumenty src
a dst
oběma funkcím předávají ukazatele na buffery, v nichž je uložena vstupní hodnota (src
), resp. do nichž se má zapsat zkonvertovaný výsledek (dst
). Konečně argument size
u druhé funkce udává ještě délku bufferu pro výsledek - ta by měla být dostatečná pro to, aby do ní bylo možno zapsat úplnou textovou reprezentaci příslušné adresy IPv4 nebo IPv6.
Funkce inet_pton vrací 1 v případě úspěchu konverze, 0 v případě špatného vstupu a -1, pokud udaná adresová rodina není známa. Funkce inet_ntop naproti tomu v případě úspěchu vrací ukazatel na buffer, v němž je uložen výsledek a nulový ukazatel v případě neúspěchu.