в который следует поместить принимаемые
count = send(sd, msg, length,
flags);
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
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий