Читаем UNIX: разработка сетевых приложений полностью

На рис. 4.1 представлен типичный сценарий взаимодействия, происходящего между клиентом и сервером. Сначала запускается сервер, затем, спустя некоторое время, запускается клиент, который соединяется с сервером. Предполагается, что клиент посылает серверу запрос, сервер этот запрос обрабатывает и посылает клиенту ответ. Так продолжается, пока клиентская сторона не закроет соединение, посылая при этом серверу признак конца файла. Затем сервер закрывает свой конец соединения и либо завершает работу, либо ждет подключения нового клиента.

Рис. 4.1. Функции сокетов для элементарного клиент-серверного соединения TCP

<p>4.2. Функция socket</p>

Чтобы обеспечить сетевой ввод-вывод, процесс должен начать работу с вызова функции socket, задав тип желаемого протокола (TCP с использованием IPv4, UDP с использованием IPv6, доменный сокет Unix и т.д.).

#include

int socket(int family, int type, int protocol);

Возвращает: неотрицательный дескриптор, если функция выполнена успешно, -1 в случае ошибки

Константа familyзадает семейство протоколов. Ее возможные значения приведены в табл. 4.1. Часто этот параметр функции socketназывают «областью» или «доменом» ( domain), а не семейством. Значения константы type(тип) перечислены в табл. 4.2. Аргумент protocolдолжен быть установлен в соответствии с используемым протоколом (табл. 4.3) или должен быть равен нулю для выбора протокола, по умолчанию соответствующего заданному семейству и типу.

Таблица 4.1. Константы протокола (family) для функции socket

Семейство сокетов (family)Описание
AF_INETПротоколы IPv4
AF_INET6Протоколы IPv6
AF_LOCALПротоколы доменных сокетов Unix (см. главу 14)
AF_ROUTEМаршрутизирующие сокеты (см. главу 17)
AF_KEYСокет управления ключами

Таблица 4.2. Тип сокета для функции socket

Тип (type)Описание
SOCK STREAMПотоковый сокет
SOCK_DGRAMСокет дейтаграмм
SOCK_SEQPACKETСокет последовательных пакетов
SOCK_RAWСимвольный (неструктурированный) сокет

Таблица 4.3. Возможные значения параметра protocol

ProtocolЗначение
IPPROTO_TCPТранспортный протокол TCP
IPPROTO_UDPТранспортный протокол UDP
IPPROTO_SCTPТранспортный протокол SCTP

Не все сочетания констант familyи typeдопустимы. В табл. 4.4 показаны допустимые сочетания, а также протокол, соответствующий каждой паре. Клетки таблицы, содержащие «Да», соответствуют допустимым комбинациям, для которых нет удобных сокращений. Пустая клетка означает, что данное сочетание не поддерживается.

Таблица 4.4. Сочетания констант family и type для функции socket

AF_INETAF_INET6AF_LOCALAF_ROUTEAF_KEY
SOCK_STREAMTCP/SCTPTCP/SCTPДа
SOCK_DGRAMUDPUDPДа
SOCK_SEQPACKETSCTPSCTPДа
SOCK RAWIPv4IPv6ДаДа
Перейти на страницу:

Похожие книги

Основы программирования в Linux
Основы программирования в Linux

В четвертом издании популярного руководства даны основы программирования в операционной системе Linux. Рассмотрены: использование библиотек C/C++ и стан­дартных средств разработки, организация системных вызовов, файловый ввод/вывод, взаимодействие процессов, программирование средствами командной оболочки, создание графических пользовательских интерфейсов с помощью инструментальных средств GTK+ или Qt, применение сокетов и др. Описана компиляция программ, их компоновка c библиотеками и работа с терминальным вводом/выводом. Даны приемы написания приложений в средах GNOME® и KDE®, хранения данных с использованием СУБД MySQL® и отладки программ. Книга хорошо структурирована, что делает обучение легким и быстрым. Для начинающих Linux-программистов

Нейл Мэтью , Ричард Стоунс , Татьяна Коротяева

ОС и Сети / Программирование / Книги по IT
1001 совет по обустройству компьютера
1001 совет по обустройству компьютера

В книге собраны и обобщены советы по решению различных проблем, которые рано или поздно возникают при эксплуатации как экономичных нетбуков, так и современных настольных моделей. Все приведенные рецепты опробованы на практике и разбиты по темам: аппаратные средства персональных компьютеров, компьютерные сети и подключение к Интернету, установка, настройка и ремонт ОС Windows, работа в Интернете, защита от вирусов. Рассмотрены не только готовые решения внезапно возникающих проблем, но и ответы на многие вопросы, которые возникают еще до покупки компьютера. Приведен необходимый минимум технических сведений, позволяющий принять осознанное решение.Компакт-диск прилагается только к печатному изданию книги.

Юрий Всеволодович Ревич

Программирование, программы, базы данных / Интернет / Компьютерное «железо» / ОС и Сети / Программное обеспечение / Книги по IT