Локальный адрес канала IPv6 не уникален на узле, он уникален только для сетевого адаптера, поэтому необходимо указать идентификатор области. Другими словами, вполне допустимо иметь несколько адаптеров с одинаковым IPv6-адресом.
Это означает, что вы должны принять в качестве ввода идентификатор области видимости или подходящую текстовую форму (% eth0,% 1), которую вы можете передать getaddrinfo()
.
Один из методов заключается в том, чтобы взять локальный адрес канала IPv6, перечислить интерфейсы и, если используется только одно совпадение, если несколько совпадений, вывести список интерфейсов и попросить пользователя указать, какой из них полностью форма.