Odpovídáte na názor k článku Evoluce DNS v Linuxu aneb od resolv.conf k systemd-resolved. Názory mohou přidávat pouze registrovaní uživatelé. Nově přidané názory se na webu objeví až po schválení redakcí.
> Až příště zavoláte gethostbyname…
Prosím, už ne. Je rok 2025, už celkem dlouho je v manuálové stránce gethostbyname(3)
hned na začátku napsáno:
> The getaddrinfo(3) and getnameinfo(3) functions are preferred over the gethostbyname(), gethostbyname2(), and gethostbyaddr() functions.
gethostbyname(3)
je IPv4-only funkce a existuje jen kvůli kompatibilitě velmi starých aplikací. Psát použití této funkce jako příklad v článku v roce 2025 je vyloženě škodlivé. Ostatně i funkce getaddrinfo(3)
je zastaralá v tom smyslu že používá synchronní API, ale aspoň podporuje jak IPv4 tak i IPv6 a seřadí odpovědi podle preferencí nastavených v /etc/gai.conf
.
Lepší příklad (v Pythonu, verze v C je v manuálové stránce getaddrinfo(3)
):
>>> import socket >>> socket.getaddrinfo("www.seznam.cz", "https", type=socket.SOCK_STREAM) [(<AddressFamily.AF_INET6: 30>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('2a02:598:2::1222', 443, 0, 0)), (<AddressFamily.AF_INET6: 30>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('2a02:598:a::79:222', 443, 0, 0)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('77.75.79.222', 443)), (<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('77.75.77.222', 443))]