■ эхо-клиент-сервер (который появится в главе 5).
Чтобы обеспечить удобный поиск различных тем, которых мы касаемся в этой книге, мы объединили разработанные нами программы и сопроводили их номерами листингов, в которых приведен исходный код. В табл. 1.1 перечислены версии клиента времени и даты (две из них мы уже видели). В табл. 1.2 перечисляются версии сервера времени и даты. В табл. 1.3 представлены версии эхо-клиента, а в табл. 1.4 — версии эхо-сервера.
Листинг |
Описание |
1.1 |
TCP/Ipv4, зависимый от протокола |
1.2 |
TCP/Ipv6, зависимый от протокола |
11.2 |
TCP/Ipv4, зависимый от протокола, вызывает функции gethostbyname и getservbyname |
11.5 |
TCP, независимый от протокола, вызывает функции getaddrinfo и tcp_connect |
11.10 |
UDP, независимый от протокола, вызывает функции getaddrinfo и udp_connect |
16.7 |
TCP, использует неблокирующую функцию connect |
31.2 |
TCP/IPv4, зависимый от протокола |
Д.1 |
TCP, зависимый от протокола, генерирует SIGPIPE |
Д.2 |
TCP, зависимый от протокола, печатает размер буфера сокета и MSS |
Д.5 |
TCP, зависимый от протокола, допускает использование имени узла (функция gethostbyname) или IP-адреса |
Д.6 |
TCP, независимый от протокола, допускает использование имени узла (функция gethostbyname). |
Листинг |
Описание |
1.5 |
TCP/IPv4, зависимый от протокола |
11.7 |
TCP, независимый от протокола, вызывает getaddrinfo и tcp_listen |
11.8 |
TCP, независимый от протокола, вызывает getaddrinfo и tcp_listen |
11.13 |
UDP, независимый от протокола, вызывает getaddrinfo и udp_server |
13.2 |
TCP, независимый от протокола, выполняется как автономный демон |
13.4 |
TCP, независимый от протокола, порожденный демоном inetd |
Листинг |
Описание |
5.3 |
TCP/IPv4, зависимый от протокола |
6.1 |
TCP, использует функцию select |
6.2 |
TCP, использует функцию select и работает в пакетном режиме |
8.3 |
UDP/IPv4, зависимый от протокола |
8.5 |
UDP, проверяет адрес сервера |
8.7 |
UDP, вызывает функцию connect для получения асинхронных ошибок |
14.2 |
UDP, тайм-аут при чтении ответа сервера с использованием сигнала SIGALRM |
14.4 |
UDP, тайм-аут при чтении ответа сервера с использованием функции select |
14.5 |
UDP, тайм-аут при чтении ответа сервера с использованием опции сокета SO_RCVTIMEO |
14.7 |
TCP, использует интерфейс /dev/poll |
14.8 |
TCP, использует интерфейс kqueue |
15.4 |
Поток домена Unix, зависит от протокола |
15.6 |
Дейтаграмма домена Unix, зависит от протокола |
16.1 |
TCP, использует неблокируемый ввод-вывод |
16.6 |
TCP, использует два процесса (функцию fork) |
16.14 |
TCP, устанавливает соединение, затем посылает пакет RST |
20.1 |
UDP, широковещательный, ситуация гонок |
20.2 |
UDP, широковещательный, ситуация гонок |
20.3 |
UDP, широковещательный, для устранения ситуации гонок используется функция pselect |
20.5 |
UDP, широковещательный, для устранения ситуации гонок используются функции sigsetjmp и siglongmp |
20.6 |
UDP, широковещательный, для устранения ситуации гонок в обработчике сигнала используется IPC |
22.4 |
UDP, увеличение надежности протокола за счет применения повторной передачи, тайм-аутов и порядковых номеров |
26.1 |
TCP, использование двух потоков |
27.4 |
TCP/IPv4, задание маршрута от отправителя |
27.5 |
UDP/IPv6, задание маршрута от отправителя |
Листинг |
Описание |
5.1 |
TCP/IPv4, зависимый от протокола |
5.9 |
TCP/IPv4, зависимый от протокола, корректно обрабатывает завершение всех дочерних процессов |
6.3 |
TCP/IPv4, зависимый от протокола, использует функцию select, один процесс обрабатывает всех клиентов |
6.5 |
TCP/IPv4, зависимый от протокола, использует функцию poll, один процесс обрабатывает всех клиентов |
8.1 |
UDP/IPv4, зависимый от протокола |
8.14 |
TCP и UDP/IPv4, зависимый от протокола, использует функцию select |
14.6 |
TCP, использует стандартный ввод-вывод |
15.3 |
Доменный сокет Unix, зависимый от протокола |
15.5 |
Дейтаграмма домена Unix, зависит от протокола |
15.13 |
Доменный сокет Unix, с передачей данных, идентифицирующих клиента |
22.3 |
UDP, печатает полученный IP-адрес назначения и имя полученного интерфейса, обрезает дейтаграммы |
22.13 |
UDP, связывает все адреса интерфейсов |
25.2 |
UDP, использование модели ввода-вывода, управляемого сигналом |
26.2 |
TCP, один поток на каждого клиента |
26.3 |
TCP, один поток на каждого клиента, машинонезависимая (переносимая) передача аргумента |
27.4 |
TCP/IPv4, печатает полученный маршрут от отправителя |
27.6 |
UDP/IPv4, печатает полученный маршрут от отправителя и обращает его |
28.21 |
UDP, использует функцию icmpd для получения асинхронных ошибок |
Д.9 |
UDP, связывает все адреса интерфейсов |