Дальше: 6 Обмен данными при Вверх: socket Назад: 4 Установление TCP соединения

5 Передача данных через TCP соединение

Для обмена данными при помощи протокола TCP используются функции send и recv. Функция send предназначена для отправки данных: ssize_t send(int socket, const void *buffer, size_t length, int flags);

Функция выполняет передачу данных через указанный сокет партнеру. Аргумент socket определяет дескриптор файла сокета, через который отправляются данные. buffer указывает на буфер, содержащий данные для передачи. Длина передаваемых данных определяется аргументом length. Аргумент flags определяет тип передачи данных. Значение flags является результатом логического ИЛИ нуля или большего числа следующих констант:

MSG_OOB
передать срочные данные.
MSG_DONTROUTE
игнорировать параметры маршрутизации.

В случае успешного завершения send возвращает число переданных байт. В противном случае возвращаемое значение равно -1.

Для приема данных используется функция recv. ssize_t recv(int socket, void *buffer, size_t length, int flags);

Функция recv принимает данные из сокета, заданного первым аргументом. Аргумент buffer указывает на буфер в который будут помещены принятые данные. length определяет длину буфера. Аргумент flags определяет параметры получения данных.Значение flags является результатом логического ИЛИ нуля или большего числа следующих констант:

MSG_PEEK
данные не удаляются из буфера приема. Следующий вызов функции recv прочитает те же данные.
MSG_OOB
принять срочные данные.
MSG_WAITALL
блокировать функцию, пока не будет принят полный объем данных, определенный аргументом length. Функция может вернуть меньший объем данных в случае обрыва соединения, ошибки, связанной с сокетом, использования флага MSG_PEEK.

В случае успешного завершения функция возвращает число принятых байт. В противном случае возвращается -1.



Zwon
2002-03-24