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