Dieser Artikel wurde maschinell übersetzt. Wenn Sie die englische Version des Artikels anzeigen möchten, aktivieren Sie das Kontrollkästchen Englisch. Sie können den englischen Text auch in einem Popupfenster anzeigen, indem Sie den Mauszeiger über den Text bewegen.
Übersetzung
Englisch

Socket.Send-Methode: (Byte[], SocketFlags)

 

Veröffentlicht: Oktober 2016

Sendet Daten an einen verbundenen Socket unter Verwendung des angegebenen SocketFlags.

Namespace:   System.Net.Sockets
Assembly:  System (in System.dll)

public int Send(
	byte[] buffer,
	SocketFlags socketFlags
)

Parameter

buffer
Type: System.Byte[]

Ein Array vom Typ Byte enthält die Daten gesendet werden.

socketFlags
Type: System.Net.Sockets.SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

Rückgabewert

Type: System.Int32

Die Anzahl von Bytes, die zum Socket gesendet wurden.

Exception Condition
ArgumentNullException

buffer ist null.

SocketException

Fehler beim Versuch, auf den Socket zuzugreifen. Weitere Informationen finden Sie im Abschnitt Hinweise.

ObjectDisposedException

Der Socket wurde geschlossen.

Send sendet Daten synchron an den Remotehost, der der Connect oder Accept -Methode und gibt die Anzahl der erfolgreich Bytes gesendeten. Die Send Methode kann für verbindungsorientierte und verbindungslose Protokolle verwendet werden.

Diese Überladung muss ein Puffer mit den Daten zu senden und eine bitweise Kombination von SocketFlags. Der Pufferoffset hat den Standardwert 0, und die Anzahl der zu sendenden Bytes entspricht der Größe des Puffers. Bei Angabe der DontRoute als kennzeichnen der socketflags Parameterwert, der die Daten, die Sie senden werden nicht weitergeleitet.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie aufrufen Connect vor dem Aufrufen dieser Methode oder Send löst eine SocketException. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie entweder mit Connect um eine Verbindung herzustellen, oder Accept eine eingehende Verbindung annehmen.

Wenn Sie ein verbindungsloses Protokoll verwenden, Daten an mehrere verschiedene Hosts senden möchten, verwenden Sie die SendTo Methode. Wenn Sie nicht verwenden die SendTo -Methode müssen Sie Aufrufen der Connect -Methode vor jedem Aufruf von Send. Sie können SendTo auch, wenn Sie mit einen Standard-Remotehost eingerichtet haben Connect. Sie können auch den Remotehost vor dem Aufruf ändern Send durch einen anderen Aufruf Connect.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden Send wird blockiert, bis alle Bytes im Puffer gesendet wurden, sofern kein Timeout festgelegt wurde Socket.SendTimeout. Wenn der Timeoutwert überschritten wurde, die Send Aufruf löst eine SocketException. Im nicht blockierenden Modus Send möglicherweise erfolgreich abgeschlossen, auch wenn er kleiner als die Anzahl der Bytes im Puffer gesendet. Es ist der Zuständigkeit der Anwendung verfolgen die Anzahl der gesendeten Bytes und den Vorgang zu wiederholen, bis die angeforderte Anzahl von Bytes von der Anwendung gesendet. Es gibt auch keine Garantie, die die gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu steigern, kann eine des zugrunde liegenden Systems Übertragung Verzögerung, bis eine bedeutende Menge ausgehender Daten gesammelt wurde. Ein erfolgreicher Abschluss des der Send Methode bedeutet, dass der zugrunde liegende Systemtyp des Arbeitsbereichs Puffer hatte Daten für ein Netzwerk gesendet werden.

System_CAPS_noteHinweis

Sie müssen sicherstellen, dass die Größe des Puffers nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters übersteigt. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und Send löst eine SocketException. Erhalten Sie eine SocketException, verwenden Sie die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie in der Windows Sockets-Version 2-API-Fehler-Code-Dokumentation in der MSDN Library für eine ausführliche Beschreibung des Fehlers.

System_CAPS_noteHinweis

Der erfolgreiche Abschluss eines Sendevorgangs deutet nicht, dass die Daten erfolgreich übermittelt wurden. Ist kein Pufferplatz verfügbar innerhalb des transportsystems zum Speichern der Daten übertragen werden, blockiert senden, es sei denn, der Socket in nicht blockierenden Modus versetzt wurde.

System_CAPS_noteHinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unterNetzwerkablaufverfolgung in .NET Framework.

Das folgende Codebeispiel veranschaulicht das Senden von Daten über einen verbundenen Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try 
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}

.NET Framework
Verfügbar seit 1.1
Zurück zum Anfang
Anzeigen: