sockaddr
используется в большем количестве мест, чем просто connect
и bind
, в том числе в тех местах, где вы не обладаете какими-либо внешними знаниями о соответствующей семье адресов - getaddrinfo
является одним.
Кроме того, хотя я не верю, что следующее приравнивает к практике где-либо, я вижу, что это было в глазах тех, кто изначально разрабатывал этот материал: вызов socket()
определяет семейство протоколов.sockaddr
содержит семейство адресов.На практике я считаю, что они всегда одинаковы, но теоретически у вас может быть протокол, способный поддерживать два разных типа адресов.
РЕДАКТИРОВАТЬ: есть другой способ, которым этот параметр полезен.Если вы используете сокеты дейтаграмм (UDP) и у вас есть сокет в «подключенном» состоянии с адресом назначения по умолчанию, вы можете очистить этот адрес , вызвав connect()
с sockaddr
сsa_family
установлен на AF_UNSPEC
.