Sdílet prostřednictvím


CAsyncSocket::Send

Volání funkce tento člen připojeným soketem odesílat data.

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

Parametry

  • lpBuf
    Vyrovnávací paměť obsahuje data předávají.

  • nBufLen
    Délka dat v 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_DONTROUTE Určuje, že data by neměly být předmětem směrování.Rozhraní Windows Sockets dodavatele můžete ignorovat tento příznak.

    • MSG_OOB out-of-band data odeslat (SOCK_STREAM pouze).

Vrácená hodnota

Pokud nedojde k žádné chybě, Odeslat vrátí celkový počet odeslaných znaků.(Všimněte si, že to může být nižší než číslo podle nBufLen .) 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.

  • WSAEACCES požadovaná adresa je adresa všesměrového vysílání, ale nebyla nastavena odpovídající příznak.

  • WSAEINPROGRESS právě probíhá blokující operace rozhraní Windows Sockets.

  • WSAEFAULT lpBuf argument není platný část adresního prostoru uživatele.

  • WSAENETRESET připojení nutné obnovit, protože implementace rozhraní Windows Sockets je zrušen.

  • WSAENOBUFSImplementace rozhraní Windows Sockets hlásí zablokování vyrovnávací paměti.

  • WSAENOTCONN soket není připojen.

  • 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 Odeslat na soketu po ShutDown vyvolal s nHow na hodnotu 1 nebo 2.

  • WSAEWOULDBLOCK soketu je označen jako neblokový a požadovaná operace by blokování.

  • WSAEMSGSIZE typ soketu je SOCK_DGRAM, a datagram je větší než maximální podporovaných implementací rozhraní Windows Sockets.

  • 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

Odeslat je použít k zápisu dat odesílaných na připojené sockets proudu nebo datagram.Pro datagram sockets musí věnovat nepřesahující maximální velikost paketu IP podkladové podsítí, což je dáno iMaxUdpDg prvek WSADATA struktury vrácené AfxSocketInit .Pokud se data atomicky projít základní protokol chyba příliš dlouho WSAEMSGSIZE je vrácen prostřednictvím GetLastError , a přenášena žádná data.

Všimněte si, že datagramu soketu úspěšné dokončení Odeslat neznamená data byla úspěšně doručena.

Na CAsyncSocket objekty typu SOCK_STREAM, počet zapsaných bajtů může být mezi 1 a požadované délce podle dostupnosti vyrovnávací paměti v místních a zahraničních hostitelích.

Příklad

Příklad pro CAsyncSocket::OnSend.

Požadavky

Záhlaví: afxsock.h

Viz také

Referenční dokumentace

Třída CAsyncSocket

Graf hierarchie

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::SendTo