CAsyncSocket

int ReceiveFrom ( Void * LpBuf, Int nBufLen, CStringamp; rSocketAddress, UINT & rSocketPort, int nFlags = 0 );

int ReceiveFrom ( Void * LpBuf, Int nBufLen, SOCKADDR * LpSockAddr, Int * LpSockAddrLen, Int nFlags = 0 );

Rückgabewert

Wenn kein Fehler auftritt, gibt ReceiveFrom die Anzahl der empfangenen Bytes zurück. Wenn die Verbindung geschlossen wurde, wird 0 zurückgegeben. Andernfalls ist der Wert SOCKET_ERROR zurückgegeben, und ein Fehlercode kann durch Aufrufen von GetLastErrorabgerufen werden. Wenden Sie die folgenden Fehler auf dieser Member-Funktion:

Parameter

lpBuf

Ein Puffer für die eingehenden Daten.

nBufLen

Die Länge des LpBuf in Byte.

rSocketAddress

Verweis auf ein CString -Objekt, das eine gepunktete Anzahl IP-Adresse empfängt.

rSocketPort

Verweis auf eine UINT , die einen Port speichert.

lpSockAddr

Ein Zeiger auf eine SOCKADDR -Struktur, die enthält die Quelladresse nach Rückkehr.

lpSockAddrLen

Ein Zeiger auf die Länge der die Quell-Adresse in LpSockAddr in Byte.

nFlags

Gibt an, wie in dem der Aufruf vorgenommen wurde. Die Semantik dieser Funktion werden durch die Socket-Optionen und des nFlags -Parameters bestimmt. Letzteres wird erstellt, indem die folgenden Werte mit dem C++- oder -Operator kombiniert:

Bemerkungen

Rufen Sie diese Memberfunktion um ein Datagramm empfangen und speichern Sie die Quell-Adresse in der SOCKADDR -Struktur oder in rSocketAddress. Diese Funktion wird verwendet, um eingehende Daten auf einem (möglicherweise verbundenen) Socket lesen und erfassen die Adresse von der die Daten gesendet wurde.

Für Sockets vom Typ SOCK_STREAMist soviel Informationen wie derzeit bis zur Größe des Puffers geliefert wird zurückgegeben. Wenn der Socket für in-Line-Aufnahme von Out-of-Band-Daten (Socket-Option SO_OOBINLINE) konfiguriert wurde, und Out-of-Band Daten ungelesen ist, werden nur Out-of-Band Daten zurückgegeben werden. Die Anwendung kann der IOCtl SIOCATMARK Option oder OnOutOfBandData verwenden, um festzustellen, ob noch mehr Out-of-Band-Daten gelesen werden. Die Parameter LpSockAddr und LpSockAddrLen sind bei SOCK_STREAM -Sockets ignoriert.

Für Datagrammsockets ist das erste empfangene Datagramm, bis zur Größe des Puffers gelieferten Daten entnommen. Wenn das Datagramm größer als der Puffer ist, der Puffer wird mit dem ersten Teil der Meldung gefüllt, die überzähligen Daten verloren ist und ReceiveFrom gibt den Wert SOCKET_ERROR zurück, mit dem Fehlercode auf WSAEMSGSIZE festgelegt.

Wenn LpSockAddr ungleich NULL ist, und die Buchse vom Typ SOCK_DGRAM ist, wird die Netzwerkadresse für den Socket, der die Daten gesendet, die entsprechenden SOCKADDR -Struktur kopiert. Der Wert, auf den LpSockAddrLen wird auf die Größe der Struktur initialisiert und nach Rückkehr die tatsächliche Größe der dort gespeicherten Adresse angegeben geändert. Wenn keine eingehenden Daten an die Buchse verfügbar ist, der Aufruf der ReceiveFrom wartet auf Daten zu kommen, wenn der Socket nicht blockierend. In diesem Fall wird der Wert SOCKET_ERROR mit dem Fehlercode festgelegt, WSAEWOULDBLOCKzurückgegeben. Der OnReceive -Rückruf kann verwendet werden, um zu bestimmen, wenn mehr Daten ankommen.

Wenn der Socket vom Typ SOCK_STREAM ist, und die remote-Seite wurde die Verbindung ordnungsgemäß heruntergefahren, wird ein ReceiveFrom sofort mit 0 Bytes empfangen wurden abgeschlossen.

CAsyncSocket Übersicht |nbsp; Member der Klasse | Hierarchiediagramm

Siehe auch&Nbsp;CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::Receive, CAsyncSocket::Send

Index