CAsyncSocket::ReceiveFrom

Int ReceiveFrom ( порожнечу * lpBuf, int nBufLen, CStringamp; rSocketAddress, UINT & rSocketPort, Int nFlags = 0 );

Int ReceiveFrom ( порожнечу * lpBuf, int nBufLen, SOCKADDR * lpSockAddr, int * lpSockAddrLen, int nFlags = 0 );

Значення, яке повертається

Якщо помилки немає, ReceiveFrom повертає кількість байтів, що отримав. Якщо з'єднання було закрито, вона повертає значення 0. Інакше, повертається значення з SOCKET_ERROR , і міститься код помилки можуть бути отримані за номером GetLastError. Такі помилки застосовуються до цієї функції-члени:

Параметри

lpBuf

Буфер для вхідних даних.

nBufLen

Довжина lpBuf у байтах.

rSocketAddress

Посилання на CString об'єкт, який отримує пунктирною номер IP-адреси.

rSocketPort

Посилання на UINT , яка зберігає порт.

lpSockAddr

Вказівник на SOCKADDR структуру, яка містить адреси джерела, після повернення.

lpSockAddrLen

Вказівник на довжину lpSockAddr в байтах, адреси джерела.

nFlags

Визначає спосіб, в яких здійснюється виклик. Семантика ця функція визначається налаштувань socket і параметр nFlags . Останній будується шляхом об'єднання будь-яке з таких значень з C++ або оператором:

Зауваження

Телефонуйте цієї функції-члена для отримання дейтаграм і зберігати адреси джерела, у структурі SOCKADDR або в rSocketAddress. Ця функція використовується для читання вхідних даних на (можливо, підключення) сокет і захопити адресу, з якої було надіслано дані.

Для розеток типу SOCK_STREAMстільки інформації, як в даний час доступна до розміру буфер повертається. Якщо сокет було налаштовано для прийому в рядку даних-група (socket варіант SO_OOBINLINE), -група даних є непрочитані лише дані-група буде повернуто. Програми можна використовувати параметр IOCtl SIOCATMARK або OnOutOfBandData для визначення, чи будь-які більш поза діапазону даних залишається для читання. LpSockAddr і lpSockAddrLen параметри ігноруються для SOCK_STREAM розетки.

Для дейтаграм розетки дані витягується з першого дейтаграм enqueued, аж до розміру буфер. Якщо на дейтаграм перевищує буфер, буфер наповнений першу частину повідомлення, надлишкових даних втрачається і ReceiveFrom повертається значення SOCKET_ERROR з код помилки, для WSAEMSGSIZE.

Якщо lpSockAddr є ненульовим, сокет це виду SOCK_DGRAM, мережної адреси сокету, який послав дані копіюється до відповідного SOCKADDR структури. Значення, вказав на lpSockAddrLen ініціалізується розмірів цієї структури а змінено на повернення вказати фактичний розмір адресу, що зберігається там. Якщо немає вхідних даних в розетку, ReceiveFrom дзвінок чекає дані надходять, якщо тільки сокет nonblocking. У цьому випадку, повертається значення з SOCKET_ERROR з кодом помилки, для WSAEWOULDBLOCK. Зворотного виклику OnReceive використовується для визначення, коли надходить більше даних.

Якщо сокет типу SOCK_STREAM і віддаленого боку має завершити роботу підключення витончено, ReceiveFrom буде завершити негайно з 0 байт отримав.

Огляд CAsyncSocket |nbsp; Члени класу | Ієрархічна діаграма

Дивіться також CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::Receive, CAsyncSocket::Send

Index