Udostępnij za pośrednictwem


CAsyncSocket::Send

Wywołanie tej funkcji Członkowskie do przesyłania danych połączonych gniazda.

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

Parametry

  • lpBuf
    Bufor zawierający dane przekazywane.

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

  • 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, wysłać 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 argument nie jest prawidłową część przestrzeni adresowej użytkownika.

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

  • WSAENOBUFSImplementacja Windows Sockets raporty zakleszczenia buforu.

  • WSAENOTCONN gniazdo nie jest podłączony.

  • 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 wysłać 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.

  • WSAEINVAL z nie powiązano gniazdo powiązania.

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

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

Uwagi

Wyślij jest używany do zapisu danych wychodzących na połączonych gniazda strumienia lub datagram.Dla gniazd datagram należy uważać aby nie przekracza maksymalny rozmiar pakietów IP podsieci podstawowej określonej przez iMaxUdpDg elementu WSADATA struktury zwrócony przez AfxSocketInit.Jeśli dane są zbyt długie, aby przechodzić w sposób atomowy podstawowym protokołem błąd WSAEMSGSIZE jest zwracana za pośrednictwem GetLastError, i jest przekazywany żadnych danych.

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

Na CAsyncSocket obiekty typu SOCK_STREAM, liczba zapisanych bajtów może być między 1 a żądanej długości, w zależności od dostępności buforu na hostach lokalnych i zagranicznych.

Przykład

Zobacz przykład dla CAsyncSocket::OnSend.

Wymagania

Nagłówek: afxsock.h

Zobacz też

Informacje

Klasa CAsyncSocket

Wykres hierarchii

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::SendTo