Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Socket.SendTo-Methode (Byte[], Int32, Int32, SocketFlags, EndPoint)

Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt und beginnt dabei an der angegebenen Position im Puffer, wobei die angegebenen SocketFlags verwendet werden.

Namespace:  System.Net.Sockets
Assembly:  System (in System.dll)
public int SendTo(
	byte[] buffer,
	int offset,
	int size,
	SocketFlags socketFlags,
	EndPoint remoteEP
)

Parameter

buffer
Typ: System.Byte[]
Ein Array vom Typ Byte, das die zu sendenden Daten enthält.
offset
Typ: System.Int32
Die Position im Datenpuffer, an der mit dem Senden von Daten begonnen werden soll.
size
Typ: System.Int32
Die Anzahl der zu sendenden Bytes.
socketFlags
Typ: System.Net.Sockets.SocketFlags
Eine bitweise Kombination der SocketFlags-Werte.
remoteEP
Typ: System.Net.EndPoint
Der EndPoint, der den Zielort der Daten darstellt.

Rückgabewert

Typ: System.Int32
Die Anzahl der gesendeten Bytes.
AusnahmeBedingung
ArgumentNullException

buffer ist null.

- oder -

remoteEP ist null.

ArgumentOutOfRangeException

offset ist kleiner als 0.

- oder -

offset ist größer als die Länge von buffer.

- oder -

size ist kleiner als 0.

- oder -

size ist größer als die Länge von buffer minus dem Wert des offset-Parameters.

SocketException

socketFlags ist keine gültige Kombination von Werten.

- oder -

Beim Zugriff auf den Socket ist ein Fehler auf Betriebssystemebene aufgetreten. Weitere Informationen finden Sie im Abschnitt Hinweise.

ObjectDisposedException

Der Socket wurde geschlossen.

SecurityException

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Wenn Sie in dieser Überladung das DontRoute-Flag als socketflags-Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.

Bei verbindungslosen Protokollen müssen Sie keinen Standardremotehost mit der Connect-Methode einrichten, bevor Sie SendTo aufrufen. Dies ist nur erforderlich, wenn Sie die Send-Methode aufrufen möchten. Wenn Sie die Connect-Methode vor dem Aufruf von SendTo aufrufen, überschreibt der remoteEP-Parameter den angegebenen Standardremotehost lediglich für diesen Sendevorgang. Außerdem ist kein Aufruf der Bind-Methode erforderlich, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Anschlussnummer zuweist. Verwenden Sie nach dem erfolgreichen Abschluss der SendTo-Methode die LocalEndPoint-Eigenschaft zum Identifizieren der zugewiesenen lokalen Netzwerkadresse und Anschlussnummer.

Obwohl SendTo in erster Linie für verbindungslose Protokolle konzipiert ist, ist eine Verwendung auch bei verbindungsorientierten Protokollen möglich. Bei verbindungsorientierten Protokollen müssen Sie entweder zuerst mit Connect eine Verbindung mit dem Remotehost herstellen oder Accept aufrufen, um eine eingehende Verbindung anzunehmen. Wenn Sie keine Remotehostverbindung herstellen oder annehmen, löst SendTo eine SocketException aus. Sie können einen Standardremotehost für ein verbindungsloses Protokoll auch vor dem Aufruf der SendTo-Methode einrichten. In beiden Fällen ignoriert SendTo den remoteEP-Parameter und sendet nur Daten an den Standardremotehost oder den Remotehost, mit dem eine Verbindung besteht.

Blockierende Sockets werden blockiert, bis die angeforderte Anzahl von Bytes gesendet wurde. Da ein nicht blockierender Socket sofort beendet wird, werden möglicherweise nicht alle Daten in einem einzigen Vorgang gesendet. 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. Zur höheren Netzwerkleistung kann die Übertragung vom zugrunde liegenden System verzögert werden, bis sich eine gewisse Menge ausgehender Daten gesammelt hat. Ein erfolgreicher Abschluss der SendTo-Methode bedeutet, dass das zugrunde liegende System über genügend Speicher zum Puffern der Daten für eine Netzwerkübertragung verfügt.

Wenn Sie ein verbindungsloses Protokoll im blockierenden Modus verwenden, wird SendTo blockiert, bis das Datagramm gesendet wurde. Um Daten an eine Broadcastadresse zu senden, müssen Sie zunächst die SetSocketOption-Methode aufrufen und die Socketoption auf SocketOptionName.Broadcast festlegen. Außerdem müssen Sie sicherstellen, dass die Größe nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters übersteigt. Andernfalls wird das Datagramm nicht gesendet, und SendTo löst eine SocketException aus.

HinweisHinweis

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

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

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. Der Offset, die Größe und SocketFlags werden an die SendTo-Methode übergeben.


    public static void SendTo4()
    {
        IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
        IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

        Socket s = new Socket(endPoint.Address.AddressFamily,
            SocketType.Dgram,
            ProtocolType.Udp);

        byte[] msg = Encoding.ASCII.GetBytes("This is a test");
        Console.WriteLine("Sending data.");
        // This call blocks. 
        s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
        s.Close();
    }



.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, 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)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.
Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)

Community-Beiträge

HINZUFÜGEN
© 2013 Microsoft. Alle Rechte vorbehalten.