Шрифт:
Если в структуре
На рис. 11.3 представлена возвращаемая информация для следующего вызова:
На этом рисунке все, кроме переменной
Порт 53 предназначен для службы
В табл. 11.1 показано число структур
Таблица 11.1. Число структур addrinfo, возвращаемых для каждого IP-адреса
Элемент ai_socktype | Служба обозначена именем и предоставляется: | Служба обозначена именем порта | |||||
---|---|---|---|---|---|---|---|
Только TCP | Только UDP | Только SCTP | TCP и UDP | TCP и SCTP | TCP, UDP и SCTP | ||
0 | 1 | 1 | 1 | 2 | 2 | 3 | Ошибка |
SOCK_STREAM | 1 | Ошибка | 1 | 1 | 2 | 2 | 2 |
SOCK_DGRAM | Ошибка | 1 | 1 | Ошибка | 1 | 1 | |
SOCK_SEQPACKET | Ошибка | Ошибка | 1 | Ошибка | 1 | 1 | 1 |
Более одной структуры
Если бы мы рассматривали все 64 возможных варианта сочетаний входных данных для функции
Задание имени узлаи службы. Это традиционный случай для клиента TCP и UDP. По завершении клиент TCP перебирает в цикле все возвращаемые IP-адреса, вызывая функции
Для клиента UDP структура адреса сокета, заполняемая с помощью функции
Если клиент знает, что он обрабатывает только один тип сокета (например, клиентами Telnet и FTP обрабатываются только сокеты TCP, а клиентами TFTP — только сокеты UDP), то элементу
Типичный сервер задает службу (service), но не имя узла (hostname), и задает флаг
Сервер UDP вызовет функции
Как и в случае типичного клиентского кода, если сервер знает, что он обрабатывает только один тип сокета, то элемент