CAsyncSocket::Receive
Wywołanie tej funkcji Członkowskich do odbierania danych z gniazda.
virtual int Receive(
void* lpBuf,
int nBufLen,
int nFlags = 0
);
Parametry
lpBuf
Bufor danych przychodzących.nBufLen
Długość lpBuf w bajtach.nFlags
Określa sposób wywołania.Semantyka tej funkcji są określane przez opcje gniazda i nFlags parametru.Ten ostatni jest skonstruowany przez następujące wartości z C++ OR operatora:MSG_PEEK wglądu przychodzących danych.Dane jest kopiowany do buforu, ale nie są usuwane z kolejki wejściowej.
MSG_OOB przetwarzania danych-band.
Wartość zwracana
Jeśli błąd nie wystąpi, odbioru zwraca liczbę bajtów odebranych.Połączenie zostało zamknięte, zwraca wartość 0.W przeciwnym razie wartość SOCKET_ERROR jest zwracana i kod błędu mogą być pobierane przez wywołanie GetLastError.Do tej funkcji Członkowskich stosuje się następujące błędy:
WSANOTINITIALISED pomyślnie AfxSocketInit musi wystąpić przed użyciem tego interfejsu API.
WSAENETDOWN implementacja Windows Sockets wykrył, że podsystem sieci nie powiodło się.
WSAENOTCONN gniazdo nie jest podłączony.
WSAEINPROGRESS jest wykonywana operacja blokująca Windows Sockets.
WSAENOTSOCK deskryptora nie jest gniazdem.
WSAEOPNOTSUPP MSG_OOB została określona, ale gniazdo nie jest typu SOCK_STREAM.
WSAESHUTDOWN został zamknięty gniazdo; nie jest możliwe wywołanie odbioru na gnieździe po ShutDown została przywołana z nHow ustawiona na 0 lub 2.
WSAEWOULDBLOCK gniazdo jest oznaczony jako nieblokujących i odbioru Operacja spowodowałaby zablokowanie.
WSAEMSGSIZE datagram jest zbyt duży do buforu i został obcięty.
WSAEINVAL z nie powiązano gniazdo powiązania.
WSAECONNABORTED obwód wirtualny została przerwana z powodu limitu czasu lub innych awarii.
WSAECONNRESET obwód wirtualny został zresetowany przez strony zdalnej.
Uwagi
Ta funkcja jest używany dla strumienia połączonych lub datagram sockets i jest używany do odczytywania danych przychodzących.
Dla gniazd typu SOCK_STREAM, jak wiele informacji jest obecnie dostępnych rozmiarów bufor jest zwracany.Jeśli gniazdo skonfigurowano w linii odbioru danych-band (socket opcja SO_OOBINLINE) i danych-band nieprzeczytane, zostaną zwrócone dane tylko out-of-band.Aplikacja może używać IOCtlSIOCATMARK opcji lub OnOutOfBandData do określenia, czy wszystkie dane bardziej z pozapasmowego pozostaje odczytywane.
Dla gniazd datagram danych jest wyodrębniana z pierwszej datagram został umieszczony w kolejce, do rozmiaru bufor.Jeśli datagram jest większe niż bufor, bufor jest wypełniona w pierwszej części datagram, nadmiar dane zostaną utracone, a odbierania zwraca wartość SOCKET_ERROR z kodem błędu ustaw WSAEMSGSIZE.Jeśli przychodzące dane są niedostępne w gnieździe wartość SOCKET_ERROR zwracany jest kod błędu ustaw WSAEWOULDBLOCK.OnReceive funkcji wywołania zwrotnego może służyć do określenia, kiedy nadejdzie więcej danych.
Jeśli typem jest gniazdo SOCK_STREAM i strona zdalna jest zamknięcie połączenia, odbioru natychmiast zakończy się 0 bajtów odebranych.Jeśli połączenie zostało zresetowane, odbioru powiedzie się z powodu błędu WSAECONNRESET.
Otrzymywać należy wywołać tylko raz dla każdej godziny CAsyncSocket::OnReceive jest wywoływana.
Przykład
Zobacz przykład dla CAsyncSocket::OnReceive.
Wymagania
Nagłówek: afxsock.h