CAsyncSocket::Receive
Volání funkce tohoto člena přijímat data z soket.
virtual int Receive(
void* lpBuf,
int nBufLen,
int nFlags = 0
);
Parametry
lpBuf
Vyrovnávací paměť pro příchozí data.nBufLen
Délka lpBuf v bajtech.nFlags
Určuje způsob při volání.Sémantika této funkce, které jsou určeny možnosti soketu a nFlags parametr.Vyrobeno kombinací následujících hodnot s C++ OR operátor:MSG_PEEK prohlížet příchozí data.Data zkopírována do vyrovnávací paměti, ale není odebrán ze vstupní fronty.
MSG_OOB out-of-band data zpracovat.
Vrácená hodnota
Pokud nedojde k žádné chybě, příjem vrací počet přijatých bajtů.Připojení bylo ukončeno, vrátí hodnotu 0.Jinak hodnota SOCKET_ERROR je vrácena a chybový kód získat voláním GetLastError.Tato funkce člena vztahuje následující chyby:
WSANOTINITIALISED úspěšné AfxSocketInit musí dojít před použitím tohoto rozhraní API.
WSAENETDOWN implementace rozhraní Windows Sockets zjistil, že selhání síťového podsystému.
WSAENOTCONN soket není připojen.
WSAEINPROGRESS právě probíhá blokující operace rozhraní Windows Sockets.
WSAENOTSOCK popisovač není soket.
WSAEOPNOTSUPP MSG_OOB byla zadána, ale soketu není typu SOCK_STREAM.
WSAESHUTDOWN soketu byl ukončen; není možné volat příjem na soketu po ShutDown vyvolal s nHow nastaveno na 0 nebo 2.
WSAEWOULDBLOCK soketu je označen jako neblokový a příjem operace by blokování.
WSAEMSGSIZE datagram byl příliš dlouhý a nevejde se do zadané vyrovnávací paměti a byla zkrácena.
WSAEINVAL soketu není vázán s Bind.
WSAECONNABORTED virtuální okruh byl přerušen z důvodu vypršení časového limitu nebo jiného selhání.
WSAECONNRESET virtuální okruh byla obnovena vzdálenou stranou.
Poznámky
Tato funkce se používá pro připojení datového proudu nebo datagram sockets a slouží ke čtení příchozí data.
Pro sokety typu SOCK_STREAM, jako je vrácené množství informací, jako je nyní k dispozici až do velikosti vyrovnávací paměť dodaná.Pokud byl nakonfigurován pro příjem řádek band data soketu (možnost soketu SO_OOBINLINE) a -band data nepřečtené, bude vrácena pouze out-of-band data.Můžete použít aplikaci IOCtlSIOCATMARK možnost nebo OnOutOfBandData zjistit, zda zůstane více out-of-band data ke čtení.
Pro datagram sockets dat je extrahován z první byla zařazena do fronty datagram, velikost vyrovnávací paměti dodány.Pokud je větší než vyrovnávací paměť předaná datagram, vyrovnávací paměť je vyplněna první část datagram, nadbytečná data ztracena, a příjem vrátí hodnotu SOCKET_ERROR nastavena s kódem chyby WSAEMSGSIZE.Pokud žádné příchozí data je k dispozici v soketu, hodnota SOCKET_ERROR je vrácen kód chyby nastaven na WSAEWOULDBLOCK.OnReceive funkci zpětného volání lze použít k určení, kdy dorazí další data.
Pokud je typ soketu SOCK_STREAM a Vzdálená strana má připojení řádné ukončení, příjem bude okamžitě s přijato 0 bajtů.Pokud připojení bylo resetováno, příjem se nezdaří s chybou WSAECONNRESET.
Zobrazí by měla být volána pouze jednou pro každý čas CAsyncSocket::OnReceive se nazývá.
Příklad
Příklad pro CAsyncSocket::OnReceive.
Požadavky
Záhlaví: afxsock.h