Программное обеспечение компьютерных сетей и информационных систем. Баканов В.М. - 54 стр.

UptoLike

Составители: 

- 54 -
Функция передачи данных send имеет 4 параметра - дескриптор сокета
sock, на котором выполняется передача, адрес буфера buf, содержащего пе-
редаваемое сообщение, размер этого буфера bufsize и флаги flags
int send(SOCKET sock, const char FAR *buf, int bufsize, int flags);
Фрагмент исходного C-кода передачи данных серверу приведен ниже
char szBuf[80];
lstrcpy(szBuf, "Тестовая строка для передачи");
send(srv_socket, szBuf, lstrlen(szBuf), 0);
Параметры предназначенной для приема данных функции recv анало-
гичны параметрам функции send
int
recv(SOCKET sock, char FAR *buf, int bufsize, int flags);
Функции send и recv возвращают количество соответственно принятых
и переданных байтов данных. Принимающее данные приложение должно вы-
зывать функцию recv в цикле до тех пор, пока не будут приняты все пере-
данные данные, при этом на один вызов функции send может приходиться
несколько вызовов функции recv.
В случае ошибки обе
эти функции возвращают значение
SOCKET_ERROR, для тщательного анализа ошибки следует использовать
функцию WSAGetLastError.
В нижерасположенной таблице приведен список кодов ошибок, которые
могут возникать при вызове функции send
Код ошибки Описание
WSANOTINITIALISED
Перед использованием функции необходимо вызвать функ-
цию WSAStartup
WSAENETDOWN
Сбой в сети
WSAEACCES Указанный адрес является широковещательным (broadcast),
однако перед вызовом функции не был установлен соответ-
ствующий флаг
WSAEINTR
Выполнение функции было отменено при помощи функции
WSACancelBlockingCall
WSAEINPROGRESS Выполняется блокирующая функция интерфейса Windows
Sockets
WSAEFAULT Параметр buf указан некорректно (он не указывает на адрес-
ное пространство, принадлежащее приложению)
WSAENETRESET
Необходимо сбросить соединение
WSAENOBUFS
Возникла блокировка буфера
WSAENOTCONN
Сокет не подсоединен
                                        - 54 -


     Функция передачи данных send имеет 4 параметра - дескриптор сокета
sock, на котором выполняется передача, адрес буфера buf, содержащего пе-
редаваемое сообщение, размер этого буфера bufsize и флаги flags

int send(SOCKET sock, const char FAR *buf, int bufsize, int flags);

     Фрагмент исходного C-кода передачи данных серверу приведен ниже

char szBuf[80];
lstrcpy(szBuf, "Тестовая строка для передачи");
send(srv_socket, szBuf, lstrlen(szBuf), 0);

    Параметры предназначенной для приема данных функции recv анало-
гичны параметрам функции send

int
recv(SOCKET sock, char FAR *buf, int bufsize, int flags);

     Функции send и recv возвращают количество соответственно принятых
и переданных байтов данных. Принимающее данные приложение должно вы-
зывать функцию recv в цикле до тех пор, пока не будут приняты все пере-
данные данные, при этом на один вызов функции send может приходиться
несколько вызовов функции recv.
     В случае ошибки обе эти функции возвращают значение
SOCKET_ERROR, для тщательного анализа ошибки следует использовать
функцию WSAGetLastError.
     В нижерасположенной таблице приведен список кодов ошибок, которые
могут возникать при вызове функции send

    Код ошибки                                    Описание
WSANOTINITIALISED         Перед использованием функции необходимо вызвать функ-
                          цию WSAStartup
WSAENETDOWN               Сбой в сети
WSAEACCES                 Указанный адрес является широковещательным (broadcast),
                          однако перед вызовом функции не был установлен соответ-
                          ствующий флаг
WSAEINTR                  Выполнение функции было отменено при помощи функции
                          WSACancelBlockingCall
WSAEINPROGRESS            Выполняется блокирующая функция интерфейса Windows
                          Sockets
WSAEFAULT                 Параметр buf указан некорректно (он не указывает на адрес-
                          ное пространство, принадлежащее приложению)
WSAENETRESET              Необходимо сбросить соединение
WSAENOBUFS                Возникла блокировка буфера
WSAENOTCONN               Сокет не подсоединен