Поделиться через


CAsyncSocket::Send

Эта функция-член вызывается, чтобы отправить данные на подключенном сокете.

virtual int Send( 
   const void* lpBuf, 
   int nBufLen, 
   int nFlags = 0  
);

Параметры

  • lpBuf
    Буфер, содержащий данные для передачи.

  • nBufLen
    Длина данных в lpBuf в байтах.

  • nFlags
    Определяет способ вызова. Семантика этой функции определяется параметрами сокета и параметром nFlags. Второй построен, объединяя любой после значений с оператором C++ OR:

    • MSG_DONTROUTE Указывает, что данные не должны подлеубежать маршрутизации. Поставщик Windows sockets может игнорировать данный пометить.

    • MSG_OOB Отправляет экстренные данные (SOCK_STREAM ).

Возвращаемое значение

Если ошибка не возникает, то Отправить возвращает общее число отправленных символов. (Обратите внимание, что это число может быть меньше количества, показанный nBufLen). В противном случае - значение SOCKET_ERROR, и возвращается конкретный код ошибки может быть получить, вызвав GetLastError. Об ошибке применяемых к данному функции-члену.

  • WSANOTINITIALISED А успешное AfxSocketInit должно произойти перед использованием этого API.

  • Реализация Windows WSAENETDOWN sockets обнаружила, что подсистема сети.

  • Запрошенный WSAEACCES адрес широковещательной адрес, но соответствующий пометить не был установлен.

  • WSAEINPROGRESS А операция блокировки Windows sockets выполняется.

  • WSAEFAULT Аргумент lpBuf не является допустимой частью адресного пространства пользователя.

  • WSAENETRESET Необходимо сбросить соединение, поскольку реализация Windows sockets удалила его.

  • WSAENOBUFS отчеты о реализации Windows sockets взаимоблокировка буфера.

  • WSAENOTCONN Сокет не подключено.

  • Не WSAENOTSOCK дескриптор сокета.

  • WSAEOPNOTSUPP   MSG_OOB указано, но сокет не является типом SOCK_STREAM.

  • WSAESHUTDOWN Сокет было деактивации; невозможно вызвать Отправить на сокете после вызова ShutDown с nHow устанавливается значение 1 или 2.

  • WSAEWOULDBLOCK Сокет помечены как nonblocking и запрошенная операция запретитьTfа мере.

  • WSAEMSGSIZE Сокет типа SOCK_DGRAM, а каналы датаграмм превышает максимум, поддерживаемый в реализации Windows sockets.

  • WSAEINVAL Сокет не было привязано с Привязка.

  • Виртуальный WSAECONNABORTED канал будет прервана из-за истечения времени ожидания или другой ошибки.

  • Виртуальный WSAECONNRESET канал был сброшено удаленной стороной.

Заметки

Отправить используемый для записи исходящие данные на подключенных потоке или сокетах датаграмм. Для сокетов датаграмм, необходимо соблюдать осторожность, превышения максимального размера пакета IP основных подсетей, который задается элементом iMaxUdpDg в структуре WSADATA возвращаемой AfxSocketInit. Если данные, которые слишком длинны для передачи атомарным образом через базовый протокол, то возвращается ошибка WSAEMSGSIZE через GetLastError, и никакие данные не передаются.

Обратите внимание, что для сокета датаграмм успешное завершение Отправить указывает, что данные были успешно доставлены.

В объектах CAsyncSocket типа SOCK_STREAM, число записанных байтов может находиться в диапазоне от 1 до длины, не найдена, в зависимости от доступности буфера и на локальных и чужих узлах.

Пример

См. пример для CAsyncSocket::OnSend.

Требования

Header: afxsock.h

См. также

Ссылки

Класс CAsyncSocket

Диаграмма иерархии

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::SendTo