Sdílet prostřednictvím


CAsyncSocket::SendTo

Volání této členské funkce Odeslat data na daný cíl.

int SendTo(
   const void* lpBuf,
   int nBufLen,
   UINT nHostPort,
   LPCTSTR lpszHostAddress = NULL,
   int nFlags = 0 
);
int SendTo(
   const void* lpBuf,
   int nBufLen,
   const SOCKADDR* lpSockAddr,
   int nSockAddrLen,
   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).

  • lpSockAddr
    Ukazatel SOCKADDR strukturu, která obsahuje adresu soket cíle.

  • nSockAddrLen
    Délka adresy v lpSockAddr v bajtech.

Vrácená hodnota

Pokud nedojde k žádné chybě, SendTo 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 SendTo 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

SendToje 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í SendTo neznamená data byla úspěšně doručena.

SendTopouží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ů.

Slouží ke zpracování adres IPv6, CAsyncSocket::SendToEx.

Požadavky

Záhlaví: afxsock.h

Viz také

Referenční dokumentace

Třída CAsyncSocket

Diagram hierarchie

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::Send