Статья: Механизмы межпроцессных взаимодействий в операционной системе Unix
protocol - желаемый сетевой протокол
sd - дескриптор программного гнезда
Закрытие (уничтожение) гнезда
close(sd)
Связывание ранее созданного программного гнезда с именем:
bind(sd, socknm, socknlen);
sd - дескриптор ранее созданного программного гнезда
socknm - адрес структуры, которая содержит имя (идентификатор) гнезда, соответствующее требованиям домена данного гнезда и используемого протокола
для домена системы UNIX имя является именем объекта в файловой системе
при создании программного гнезда создается файл
socknlen - длина в байтах структуры socknm
Запрос связи с существующим программным гнездом со стороны процесса-клиента:
connect(sd, socknm, socknlen);
смысл параметров, как у функции bind
имя программного гнезда на другой стороне коммуникационного канала
у гнезда с дескриптором sd и у гнезда с именем socknm должны быть одинаковые домен и протокол
если тип гнезда с дескриптором sd - дейтаграммный, то connect служит для информирования системы об адресе назначения пакетов, которые в дальнейшем будут посылаться с помощью функции send
Информирования о том, что процесс-сервер планирует установление виртуальных соединений через указанное гнездо:
listen(sd, qlength);
qlength - максимальная длина очереди запросов на установление соединения, которые должны буферизоваться системой, пока их не выберет процесс-сервер
Выборка процессом-сервером очередного запроса на установление соединения с указанным программным гнездом служит функция accept:
nsd = accept(sd, address, addrlen);
sd - дескриптор существующего программного гнезда, для которого ранее была выполнена функция listen
address - массив данных, в который должна быть помещена информация, характеризующая имя программного гнезда клиента
addrlen - адрес, по которому находится длина массива address
выполнение функции приводит к установлению виртуального соединения
nsd - новый дескриптор программного гнезда, который должен использоваться при работе через данное соединение
по адресу addrlen помещается реальный размер массива данных, которые записаны по адресу address
Передача и прием данных через программные гнезда с установленным виртуальным соединением: