in_addr
представляет адрес IPv4, который действительно может вписаться в 32-разрядное целое число.
Но существуют другие типы адресов сокетов, которые не могут, например адреса IPv6.
Каждыйтип адреса сокета использует свой собственный тип структуры:
in_addr
для IPv4 in6_addr
для IPv6 char[]
для путей UNIX - и т. Д.
Обычно заключены в соответствующую sockaddr
структуру:
sockaddr_in
для IPv4 sockaddr_in6
для IPv6 sockaddr_un
для UNIX - и т. Д.
Это то, что вы используете с API-интерфейсами сокетов, такими как bind()
, connect()
, accept()
, sendto()
,recvfrom()
и т. Д.
Очень редко вам когда-нибудь понадобится использовать что-то вроде in_addr
непосредственно.Обычно вы используете его вместе с API, который требует, чтобы IPv4-адрес передавался через in_addr
struct.