Udostępnij za pośrednictwem


CAsyncSocket::SendToEx

Wywołanie tej funkcji Członkowskich do wysyłania danych do określonego miejsca przeznaczenia (uchwytów adresy IPv6).

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

Parametry

  • lpBuf
    Bufor zawierający dane przekazywane.

  • nBufLen
    Długość danych w lpBuf w bajtach.

  • nHostPort
    Port identyfikacji aplikacji gniazda.

  • lpszHostAddress
    Adres sieciowy gniazda, do którego podłączony jest ten obiekt: nazwa komputera, takie jak "ftp.microsoft.com" lub liczbę kropkami, na przykład "128.56.22.8".

  • nFlags
    Określa sposób wywołania.Semantyka tej funkcji są określane przez opcje gniazda i nFlags parametru.Ten ostatni jest skonstruowany przez następujące wartości z C++ OR operatora:

    • MSG_DONTROUTE Określa, że dane nie powinny podlegać routingu.Dostawca usługi Windows Sockets można zignorować tej flagi.

    • MSG_OOB wysłać dane-band (SOCK_STREAM tylko).

Wartość zwracana

Jeśli błąd nie wystąpi, SendToEx zwraca wartość całkowita liczba znaków wysłanych.(Uwaga ta może być mniejsza niż liczba wskazanych przez nBufLen.) W przeciwnym razie wartość SOCKET_ERROR jest zwracana i kod błędu mogą być pobierane przez wywołanie GetLastError.Do tej funkcji Członkowskich stosuje się następujące błędy:

  • WSANOTINITIALISED pomyślnie AfxSocketInit musi wystąpić przed użyciem tego interfejsu API.

  • WSAENETDOWN implementacja Windows Sockets wykrył, że podsystem sieci nie powiodło się.

  • WSAEACCES żądany adres jest adresem emisji, ale nie ustawiono odpowiednią flagę.

  • WSAEINPROGRESS jest wykonywana operacja blokująca Windows Sockets.

  • WSAEFAULTlpBuf lub lpSockAddr parametry nie są częścią przestrzeni adresowej użytkownika lub lpSockAddr argument jest za mały (mniej niż rozmiar SOCKADDR struktury).

  • WSAEINVAL nazwa hosta jest nieprawidłowy.

  • WSAENETRESET należy zresetować połączenia, ponieważ implementacja Windows Sockets porzucone go.

  • WSAENOBUFSImplementacja Windows Sockets raporty zakleszczenia buforu.

  • WSAENOTCONN gniazdo nie jest połączony (SOCK_STREAM tylko).

  • WSAENOTSOCK deskryptora nie jest gniazdem.

  • WSAEOPNOTSUPP   MSG_OOB została określona, ale gniazdo nie jest typu SOCK_STREAM.

  • WSAESHUTDOWN został zamknięty gniazdo; nie jest możliwe wywołanie SendToEx na gnieździe po ShutDown została przywołana z nHow 1 lub 2.

  • WSAEWOULDBLOCK gniazdo jest oznaczony jako nieblokujących i Żądana operacja spowodowałaby zablokowanie.

  • WSAEMSGSIZE jest gniazdo typu SOCK_DGRAM, i datagram jest większy niż maksimum obsługiwane przez implementację Windows Sockets.

  • WSAECONNABORTED obwód wirtualny została przerwana z powodu limitu czasu lub innych awarii.

  • WSAECONNRESET obwód wirtualny został zresetowany przez strony zdalnej.

  • WSAEADDRNOTAVAIL podany adres nie jest dostępna z komputera lokalnego.

  • WSAEAFNOSUPPORT adresy rodziny określonych nie można używać z tego gniazda.

  • WSAEDESTADDRREQ wymagany jest adres docelowy.

  • WSAENETUNREACH sieci jest nieosiągalny z tego hosta w tej chwili.

Uwagi

Ta metoda jest taki sam, jak CAsyncSocket::SendTo , chyba że obsługuje on IPv6 adresy jak również jako starsze protokoły.

SendToExjest używany w gniazdach datagram lub strumienia i jest używany do zapisu danych wychodzących na gnieździe.Dla gniazd datagram należy uważać aby nie przekracza maksymalny rozmiar pakietów IP podsieci podstawowej określonej przez iMaxUdpDg elementu WSADATA struktury wypełnione przez AfxSocketInit.Jeśli dane są zbyt długie, aby przechodzić w sposób atomowy podstawowym protokołem błąd WSAEMSGSIZE jest zwracana i jest przekazywany żadnych danych.

Należy zauważyć, że pomyślne zakończenie SendToEx nie wskazuje, że danych została pomyślnie dostarczona.

SendToExużywane tylko w SOCK_DGRAM gniazda do wysłania datagramu do określonego gniazda, identyfikowane przez lpSockAddr parametru.

Aby wysłać emisji (na SOCK_DGRAM tylko), adres w lpSockAddr parametru powinna być konstruowana przy użyciu specjalnego adresu IP INADDR_BROADCAST (zdefiniowany w pliku nagłówkowym Windows Sockets WINSOCK.H) wraz z numer portu zamierzone.Lub, jeśli lpszHostAddress jest parametr NULL, gniazdo skonfigurowano dla emisji.Jest ogólnie wskazane dla datagramu emisji przekracza rozmiar, w którym mogą występować fragmentacji, co oznacza, że część danych datagramu (z wyłączeniem nagłówków) nie powinna przekraczać 512 bajtów.

Wymagania

Nagłówek: afxsock.h

Zobacz też

Informacje

Klasa CAsyncSocket

Diagram hierarchii

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::Send