Condividi tramite


CAsyncSocket::Send

Chiamare la funzione membro per inviare i dati a un socket collegato.

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

Parametri

  • lpBuf
    Un buffer che contiene i dati per trasmettere.

  • nBufLen
    Lunghezza dei dati in lpBuf in byte.

  • nFlags
    Specifica la modalità in cui la chiamata viene eseguita.La semantica di questa funzione viene determinata dalle opzioni di socket e dal parametro nFlags.L'ultimo viene costruito combinando uno dei seguenti valori con l'operatore C++ OR :

    • MSG_DONTROUTE specifica che i dati non devono essere conforme al routing.Un fornitore di Windows Sockets possibile ignorare questo flag.

    • MSG_OOB invia i dati fuori bandaSOCK_STREAM (solo).

Valore restituito

Se non si verificano errori, Invia restituisce il numero totale di caratteri inviati.Notare che questo può essere meno che il valore indicato da nBufLen). In caso contrario, un valore SOCKET_ERROR viene restituito e un codice di errore specifico può essere recuperato chiamando GetLastError.Gli errori seguenti si applicano a questa funzione membro:

  • WSANOTINITIALISED Al AfxSocketInit deve verificarsi prima di utilizzare questa API.

  • WSAENETDOWN che l'implementazione di Windows Sockets ha rilevato che il sottosistema di rete non è riuscita.

  • WSAEACCES l'indirizzo è richiesto un indirizzo broadcast, ma il flag appropriato non è stato impostato.

  • WSAEINPROGRESS che blocca l'operazione di Windows Sockets è in corso.

  • WSAEFAULT l'argomento lpBuf non è in una parte dello spazio degli indirizzi dell'utente.

  • WSAENETRESET la connessione deve essere reimpostato poiché l'implementazione di Windows Sockets è stata rilasciata.

  • WSAENOBUFS i rapporti di implementazione Windows Sockets un deadlock del buffer.

  • IlWSAENOTCONN socket non è connesso.

  • WSAENOTSOCK il descrittore non è un socket.

  • WSAEOPNOTSUPP   MSG_OOB è stato specificato, ma il socket non è di tipo SOCK_STREAM.

  • IlWSAESHUTDOWN socket è stato interrotto; non è possibile chiamare Invia su un socket dopo ShutDown è stato richiamato con nHow impostato su 1 o 2.

  • IlWSAEWOULDBLOCK socket è contrassegnato come non bloccante e l'operazione richiesta blocca.

  • IlWSAEMSGSIZE socket è di tipo SOCK_DGRAMe il datagram è superiore al massimo supportato dall'implementazione Windows Sockets.

  • IlWSAEINVAL socket non è stato associato a Associa.

  • IlWSAECONNABORTED circuito virtuale è stato interrotto a causa dell'intervallo o di altro tipo.

  • IlWSAECONNRESET circuito virtuale è stato reimpostato sul lato remoto.

Note

Invia viene utilizzato per scrivere i dati in uscita nel flusso connesso o su socket di datagramma.Per i socket di datagramma, la visualizzazione deve essere effettuata per non superare la dimensione massima di pacchetto IP della subnet sottostanti, che venga fornita dall'elemento iMaxUdpDg nella struttura WSADATA restituita da AfxSocketInit.Se i dati sono troppo lunghi per passare atomico con il protocollo sottostante, l'errore WSAEMSGSIZE viene restituito tramite GetLastErrore non vengono trasmesse.

Si noti che a un socket di datagramma che il completamento Invia non indica che i dati correttamente sono stati resi.

Gli oggetti CAsyncSocket di tipo SOCK_STREAM, il numero di byte scritti può essere compreso tra 1 e la durata richiesta, secondo disponibilità del buffer sia in che negli host stranieri.

Esempio

Vedere l'esempio relativo CAsyncSocket::OnSend.

Requisiti

Header: afxsock.h

Vedere anche

Riferimenti

Classe di CAsyncSocket

Grafico della gerarchia

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::SendTo