CAsyncSocket::Send

Rufen Sie die Memberfunktion auf, um Daten auf einem angeschlossenen Socket zu senden.

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

Parameter

  • lpBuf
    Ein Puffer, der der zu sendenden Daten enthält.

  • nBufLen
    Die Länge der Daten in lpBuf in Bytes.

  • nFlags
    Gibt die Methode an, in der der Aufruf ausgeführt wird.Die Semantik dieser Funktion wird mit der Socketoptionen und den nFlags-Parameter bestimmt.Der zweite Vorgang wird erstellt, indem Sie eine der folgenden Werte mit dem Operator C++ OR kombiniert:

    • MSG_DONTROUTE gibt an, dass die Daten nicht für Routing sein sollten.Ein Windows Socket-Lieferant kann auswählen, um dieses Flag zu ignorieren.

    • MSG_OOB senden Out-of-Band-Daten (nur SOCK_STREAM ).

Rückgabewert

Wenn kein Fehler auftritt, gibt Send die Gesamtzahl der gesendeten Zeichen zurück.(Beachten Sie, dass dieses, kleiner als die Zahl sein kann angegeben durch nBufLen.) Andernfalls wird ein Wert von SOCKET_ERROR zurückgegeben, und ein bestimmter Fehlercode kann abgerufen werden, indem Sie GetLastError aufruft.Die folgenden Fehler gelten für diese Memberfunktion zu:

  • Vor der Verwendung dieser APIs WSANOTINITIALISED einem erfolgreichen AfxSocketInit muss auftreten.

  • WSAENETDOWN, das die Windows Socket-Implementierung hat, dass das Netzwerksubsystem fehlgeschlagen ist.

  • WSAEACCES die angeforderte Adresse ist eine Broadcastadresse, aber das entsprechende Flag wurde nicht festgelegt.

  • Ist blockierenden Windows Socket-Vorgang WSAEINPROGRESS A ausgeführt.

  • WSAEFAULT das lpBuf-Argument ist nicht in einem gültigen Teil des Benutzeradressbereichs.

  • WSAENETRESET die Verbindung muss zurückgesetzt werden, da die Windows Socket-Implementierung sie ablegte.

  • WSAENOBUFS die Windows Socket-Berichteüber die Ausführung ein Pufferdeadlock.

  • WSAENOTCONN der Socket wird nicht verbunden.

  • WSAENOTSOCK der Deskriptor ist kein Socket.

  • WSAEOPNOTSUPP   MSG_OOB wurde angegeben, aber der Socket ist nicht vom Typ SOCK_STREAM.

  • WSAESHUTDOWN der Socket heruntergefahren wurde; Es ist nicht möglich, Send auf einem Socket aufzurufen, nachdem ShutDown mit nHow aufgerufen wurde, das auf 1 oder 2 gesetzt ist.

  • WSAEWOULDBLOCK der Socket wird nicht als blockiert markiert und der angeforderte Vorgang würde blockieren.

  • WSAEMSGSIZE der Socket ist vom Typ SOCK_DGRAM, und das Datagramm ist größer als die maximal zulässige, das von der Windows Socket-Implementierung unterstützt wird.

  • WSAEINVAL der Socket ist nicht mit Bind gebunden.

  • WSAECONNABORTED die virtuelle Verbindung wurde aufgrund des Timeouts oder anderen Fehlers abgebrochen.

  • WSAECONNRESET die virtuelle Verbindung wurde durch den Seite zurückgesetzt.

Hinweise

Send wird verwendet, um Verbindungen mit Daten auf verbundenem Stream oder Datagrammsockets zu schreiben.Für Datagrammsockets muss daher darauf geachtet werden, um das Maximum IP-Paketgröße der zugrunde liegenden Subnetze nicht zu überschreiten, die durch das iMaxUdpDg-Element in der WSADATA-Struktur angegeben ist, die von AfxSocketInit zurückgegeben wird.Wenn die Daten zu lang sind, vom zugrunde liegenden Protokoll atomar zu übergeben, wird der Fehler WSAEMSGSIZE über GetLastError zurückgegeben, und es werden keine Daten gesendet.

Beachten Sie das für einen Datagrammsocket, den der erfolgreichen Abschluss von Send nicht angibt, dass die Daten erfolgreich zugestellt wurden.

Klicken Sie auf CAsyncSocket-Objekten des Typs SOCK_STREAM, kann die Anzahl von Bytes geschrieben zwischen 1 und der angeforderten Länge, abhängig von Pufferverfügbarkeit auf der lokalen und der fremden Hosts sein.

Beispiel

Im Beispiel für CAsyncSocket::OnSend.

Anforderungen

Header: afxsock.h

Siehe auch

Referenz

CAsyncSocket-Klasse

Hierarchien-Diagramm

CAsyncSocket::Create

CAsyncSocket::Receive

CAsyncSocket::ReceiveFrom

CAsyncSocket::SendTo