Статья: Механизмы межпроцессных взаимодействий в операционной системе Unix
count = recv(sd, buf, length, flags);
В send:
msg указывает на буфер с данными, которые требуется послать
length - длина этого буфера
flags == MSG_OOB внеочередная посылка данных
В recv:
buf указывает на буфер, в который следует поместить принимаемые данные
length - максимальная длина этого буфера
flags == MSG_PEEK перепись сообщения в пользовательский буфер без его удаления из системных буферов
Вместо send и recv можно использовать read и write
выполняются аналогично send и recv
Для посылки и приема сообщений в дейтаграммном режиме:
count = sendto(sd, msg, length, flags, socknm, socknlen);
count = recvfrom(sd, buf, length, flags, socknm, socknlen);
смысл параметров sd, msg, buf и lenght аналогичен смыслу одноименных параметров функций send и recv
socknm и socknlen функции sendto задают имя программного гнезда, в которое посылается сообщение
могут быть опущены, если до этого вызывалась функция connect
параметры socknm и socknlen функции recvfrom позволяют серверу получить имя пославшего сообщение процесса-клиента
Немедленная ликвидация установленного соединения:
shutdown(sd, mode);
немедленно остановить коммуникации
со стороны посылающего процесса
со стороны принимающего процесса
с обеих сторон
в зависимости от значения параметра mode
shutdown отличаются от close:
выполнение close последней "притормаживается" до окончания попыток системы доставить уже отправленные сообщения
shutdown разрывает соединение, но не ликвидирует дескрипторы ранее соединенных гнезд
для ликвидации требуется вызов close