Никогда не может быть больше (длина ввода - это границы для предотвращения переполнения), но может быть меньше для определенных типов сокетов, например, для сокетов доменов unix, адреса которых по сути являются путевыми именами.Для сокетов IP (v4 или v6) это всегда будет номинальный размер соответствующей структуры sockaddr_in
или sockaddr_in6
.
Также обратите внимание, что можно использовать некоторые интерфейсы, подобные этому , не знаякакой тип семейства адресов / протоколов задействован .Например, у вас может быть функция как часть кода вашей библиотеки, которая принимает сокет неизвестного типа и принимает вызовы со структурой sockaddr_storage
.Он может найти IPv4-адрес и IPv6-адрес или что-то еще полностью, в зависимости от того, что сделал вызывающий.
Это использование довольно нетипично для accept
, но гораздо более вероятно для getpeername
который использует тот же стиль интерфейса.Фактически именно так должны работать все демоны, которые запускаются с inetd
и хотят знать удаленный адрес.