Sdílet prostřednictvím


CAsyncSocket::SendToEx

Volání funkce tohoto člena odeslat data na daný cíl (popisovačů adresy IPv6).

int SendToEx(
   const void* lpBuf,
   int nBufLen,
   UINT nHostPort,
   LPCTSTR lpszHostAddress = NULL,
   int nFlags = 0 
);

Parametry

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

  • nBufLen
    Délka dat v lpBuf v bajtech.

  • nHostPort
    Port označující aplikaci soketu.

  • lpszHostAddress
    Síťová adresa soketu, ke kterému je připojen tento objekt: název počítače, například "ftp.microsoft.com" nebo tečkovaný číslo jako "128.56.22.8".

  • 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ě, SendToEx 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 nebo lpSockAddr parametry nejsou součástí adresního prostoru uživatele nebo lpSockAddr argument je příliš malá (menší než velikost SOCKADDR struktury).

  • WSAEINVAL je neplatný název hostitele.

  • 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 (SOCK_STREAM pouze).

  • 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 SendToEx 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.

  • 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.

  • WSAEADDRNOTAVAIL zadaná adresa není k dispozici z místního počítače.

  • WSAEAFNOSUPPORT tomto soketu nelze použít řady zadané adresy.

  • WSAEDESTADDRREQ je vyžadována cílová adresa.

  • WSAENETUNREACH sítě nelze v tuto chvíli dosáhnout z tohoto hostitele.

Poznámky

Tato metoda je stejná jako CAsyncSocket::SendTo , zpracovává IPv6 adresy i starší protokoly.

SendToExje použit na soketech datagram nebo proudu a slouží k zápisu odchozích dat na soket.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 vyplňuje AfxSocketInit.Pokud se data atomicky projít základní protokol chyba příliš dlouho WSAEMSGSIZE je vrácena a přenášena žádná data.

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

SendToExpoužívat pouze v SOCK_DGRAM soketu odeslat datagram konkrétní soketu identifikován lpSockAddr parametr.

Odeslat vysílání (na SOCK_DGRAM pouze), adresu v lpSockAddr parametr měla být tvořena pomocí adresy IP zvláštní INADDR_BROADCAST (definované v rozhraní Windows Sockets záhlaví souborů rozhraní WINSOCK.H) společně s určeným portem.Nebo pokud lpszHostAddress je parametr NULL, soketu je nakonfigurován pro vysílání.Není obecně vhodné pro vysílání datagram překročí velikost, jakou může dojít k fragmentaci, což naznačuje, že datová část datagram (s výjimkou záhlaví) nesmí překročit 512 bajtů.

Požadavky

Záhlaví: afxsock.h

Viz také

Referenční dokumentace

Třída CAsyncSocket

Diagram hierarchie

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::Send