Из Руководство Beej по сетевому программированию
Вы можете заставить его использовать IPv4 или IPv6 в поле ai_family или оставить AF_UNSPEC для использования что бы ни. Это круто, потому что ваш код может не зависеть от версии IP.
Как сказано в заголовке - каковы будут недостатки (или риски, если таковые имеются) всегда использовать AF_UNSPEC
вместо указания IPv4 или IPv6?
Или это только по одной причине - если версия указана, это будет гарантировать, что эта и только эта версия будет поддерживаться?
Немного предыстории - я думаю о добавлении поддержки IPv6 в клиент-серверных (C ++) приложениях, и обе версии должны поддерживаться. Поэтому я подумал, можно ли использовать AF_UNSPEC
или лучше «распознать» адрес из строки и использовать AF_INET6
или AF_INET
, в зависимости от адреса.