для домена системы UNIX имя
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
Передача и прием данных через программные гнезда
с установленным виртуальным соединением: