ВУЗ:
Составители:
55
EBADF SOCKET не является дескриптором файла;
EINTR операция была прервана каким-либо сигналом до начала
передачи данных;
ENOTSOCK SOCKET не является гнездом;
EMSGSIZE тип гнезда требует, чтобы данные передавались побайтно, а
размер переданных данных превышает допустимый размер;
EWOULDBLOCK для гнезда задан неблокируемый режим и операция записи будет
заблокирована;
ENOBUFS недостаточен размер внутреннего буферного пространства;
ENOTCONN не установлено соединение с гнездом;
EPIPE Соединение было установлено, но в настоящий момент
нарушено. В этом случае функция генерирует сигнал SIGPIPE.
Однако, если этот сигнал игнорируется или заблокирован,
функция завершается с кодом ошибки EPIPE.
int recv (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS)
Функция recv идентична функции read, однако позволяет задать
дополнительные параметры передачи в аргументе FLAGS. Если гнездо находится в
неблокируемом режиме и отсутствуют данные для чтения, функция завершается с
ошибкой, иначе ожидается поступление данных.
Функция возвращает количество считанных байтов или -1 в случае ошибки.
Переменная errno может принимать следующие значения:
EBADF SOCKET не является дескриптором файла;
ENOTSOCK SOCKET не является гнездом;
EWOULDBLOCK гнездо находится в неблокируемом режиме и операция чтения
будет заблокирована;
EINTR операция была прервана сигналом до того, как были считаны
какие-либо данные;
ENOTCONN соединение с гнездом не установлено.
Параметры передачи данных
Аргумент FLAGS функций recv и send является битовой маской и может быть
комбинацией следующих значений:
int MSG_OOB передача или получение экстренных данных;
int MSG_PEEK данные читаются или посылаются программой, но не
удаляются из очереди; может использоваться только с
функциями чтения;
int MSG_DONTROUTE не включать в сообщение информацию о маршруте;
используется только с функция посылки данных.
Приведем пример использования гнезда, передающего байтовый поток данных.
Пример клиента:
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#define PORT 5555
#define MESSAGE "Yow!!! Are we having fun yet?!?"
#define SERVERHOST "mescaline.gnu.org"
EBADF SOCKET не является дескриптором файла;
EINTR операция была прервана каким-либо сигналом до начала
передачи данных;
ENOTSOCK SOCKET не является гнездом;
EMSGSIZE тип гнезда требует, чтобы данные передавались побайтно, а
размер переданных данных превышает допустимый размер;
EWOULDBLOCK для гнезда задан неблокируемый режим и операция записи будет
заблокирована;
ENOBUFS недостаточен размер внутреннего буферного пространства;
ENOTCONN не установлено соединение с гнездом;
EPIPE Соединение было установлено, но в настоящий момент
нарушено. В этом случае функция генерирует сигнал SIGPIPE.
Однако, если этот сигнал игнорируется или заблокирован,
функция завершается с кодом ошибки EPIPE.
int recv (int SOCKET, void *BUFFER, size_t SIZE, int FLAGS)
Функция recv идентична функции read, однако позволяет задать
дополнительные параметры передачи в аргументе FLAGS. Если гнездо находится в
неблокируемом режиме и отсутствуют данные для чтения, функция завершается с
ошибкой, иначе ожидается поступление данных.
Функция возвращает количество считанных байтов или -1 в случае ошибки.
Переменная errno может принимать следующие значения:
EBADF SOCKET не является дескриптором файла;
ENOTSOCK SOCKET не является гнездом;
EWOULDBLOCK гнездо находится в неблокируемом режиме и операция чтения
будет заблокирована;
EINTR операция была прервана сигналом до того, как были считаны
какие-либо данные;
ENOTCONN соединение с гнездом не установлено.
Параметры передачи данных
Аргумент FLAGS функций recv и send является битовой маской и может быть
комбинацией следующих значений:
int MSG_OOB передача или получение экстренных данных;
int MSG_PEEK данные читаются или посылаются программой, но не
удаляются из очереди; может использоваться только с
функциями чтения;
int MSG_DONTROUTE не включать в сообщение информацию о маршруте;
используется только с функция посылки данных.
Приведем пример использования гнезда, передающего байтовый поток данных.
Пример клиента:
#include
#include
#include
#include
#include
#include
#include
#include
#define PORT 5555
#define MESSAGE "Yow!!! Are we having fun yet?!?"
#define SERVERHOST "mescaline.gnu.org"
55
Страницы
- « первая
- ‹ предыдущая
- …
- 53
- 54
- 55
- 56
- 57
- …
- следующая ›
- последняя »
