Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

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

Sendet Daten mithilfe der angegebenen SocketFlags an einen verbundenen Socket.

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

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

Parameter

buffer
Typ: System.Byte[]
Ein Array vom Typ Byte, das die zu sendenden Daten enthält.
socketFlags
Typ: System.Net.Sockets.SocketFlags
Eine bitweise Kombination der SocketFlags-Werte.

Rückgabewert

Typ: System.Int32
Die Anzahl der an den Socket gesendeten Bytes.

AusnahmeBedingung
ArgumentNullException

buffer ist null.

SocketException

Fehler beim Zugriff auf den Socket. Weitere Informationen finden Sie im Abschnitt Hinweise.

ObjectDisposedException

Der Socket wurde geschlossen.

Send sendet Daten synchron an den mit der Connect-Methode oder der Accept-Methode eingerichteten Remotehost und gibt die Anzahl der erfolgreich gesendeten Bytes zurück. Die Send-Methode kann sowohl für verbindungsorientierte als auch für verbindungslose Protokolle verwendet werden.

Bei dieser Überladung muss ein Puffer mit den zu sendenden Daten und eine bitweise Kombination vonSocketFlags vorhanden sein. Der Pufferoffset hat den Standarfwert 0, und die Anzahl der zu sendenden Bytes entspricht in der Standardeinstellung der Puffergröße. Wenn Sie das DontRoute-Flag als socketflags-Parameterwert angeben, werden die gesendeten Daten nicht weitergeleitet.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufruf dieser Methode Connect aufrufen. Andernfalls löst Send eine SocketException aus. Bei verbindungsorientierten Protokollen müssen Sie entweder eine Remotehostverbindung mit Connect einrichten oder eine eingehende Verbindung mit Accept annehmen.

Wenn Sie ein verbindungsloses Protokoll verwenden und Daten an mehrere verschiedene Hosts senden möchten, empfiehlt sich die Verwendung der SendTo-Methode. Wenn Sie die SendTo-Methode nicht verwenden, müssen Sie vor jedem Aufruf von Send die Connect-Methode aufrufen. Sie können SendTo auch dann noch verwenden, wenn Sie bereits mit Connect einen Standardremotehost eingerichtet haben. Sie können außerdem vor dem Aufruf von Send den Remotehost ändern, indem Sie Connect erneut aufrufen.

Wenn Sie ein verbindungsorientiertes Protokoll verwenden, wird Send blockiert, bis sämtliche Bytes im Puffer gesendet wurden, sofern mit Socket.SendTimeout kein Timeout festgelegt wurde. Wenn der Timeoutwert überschritten wurde, löst der Send-Aufruf eine SocketException aus. Im nicht blockierenden Modus kann Send auch erfolgreich beendet werden, ohne dass sämtliche Bytes im Puffer gesendet wurden. Dabei liegt es in der Zuständigkeit der Anwendung, die Anzahl der gesendeten Bytes nachzuvollziehen und den Vorgang zu wiederholen, bis die angeforderte Anzahl an Bytes von der Anwendung gesendet wurden. Es gibt außerdem keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk zur Verfügung stehen. Zum Erhöhen der Netzwerkleistung kann die Übertragung vom zugrunde liegenden System verzögert werden, bis eine gewisse Menge ausgehender Daten gesammelt wurde. Ein erfolgreicher Abschluss der Send-Methode bedeutet, dass das zugrunde liegende System über genügend Speicher zum Puffern der Daten für eine Netzwerkübertragung verfügt.

HinweisHinweis

Sie müssen sicherstellen, dass die Größe des Puffers nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters übersteigt. Andernfalls wird das Datagramm nicht gesendet, und Send löst eine SocketException aus. Wenn Sie eine SocketException erhalten, können Sie mit der SocketException.ErrorCode-Eigenschaft den spezifischen Fehlercode abrufen. Nachdem Sie diesen Code abgerufen haben, finden Sie in der Dokumentation der MSDN Library zu API-Fehlercodes unter Windows Sockets, Version 2, eine ausführliche Beschreibung des Fehlers.

HinweisHinweis

Der erfolgreiche Abschluss eines Sendevorgangs bedeutet nicht, dass die Daten erfolgreich übermittelt wurden. Wenn im Transportsystem für die übertragenen Daten kein Speicher im Puffer verfügbar ist, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.

HinweisHinweis

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

Im folgenden Codebeispiel wird das Senden von Daten über einen verbundenen Socket veranschaulicht.


// 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

Unterstützt in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

Es werden nicht alle Versionen sämtlicher Plattformen von .NET Framework unterstützt.. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Microsoft führt eine Onlineumfrage durch, um Ihre Meinung zur MSDN-Website zu erfahren. Wenn Sie sich zur Teilnahme entscheiden, wird Ihnen die Onlineumfrage angezeigt, sobald Sie die MSDN-Website verlassen.

Möchten Sie an der Umfrage teilnehmen?
Anzeigen:
© 2015 Microsoft