BeginSend Methode (IList(ArraySegment(Byte)), SocketFlags, AsyncCallback, Object)
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

Socket.BeginSend-Methode (IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

 

Sendet Daten asynchron an einen verbundenen Socket.

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

[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)]
public IAsyncResult BeginSend(
	IList<ArraySegment<byte>> buffers,
	SocketFlags socketFlags,
	AsyncCallback callback,
	object state
)

Parameter

buffers

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

socketFlags

Eine bitweise Kombination der SocketFlags-Werte.

callback

Der AsyncCallback-Delegat.

state

Ein Objekt mit Zustandsinformationen für diese Anforderung.

Rückgabewert

Type: System.IAsyncResult

Ein IAsyncResult, das auf den asynchronen Sendevorgang verweist.

Exception Condition
ArgumentNullException

buffers ist null.

ArgumentException

buffers ist leer.

SocketException

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

ObjectDisposedException

Der Socket wurde geschlossen.

Die BeginSend-Methode beginnt einen asynchronen Sendevorgang zum Remotehost, der in einer der folgenden Methoden eingerichtet wurde: Connect, BeginConnect, Accept oder BeginAccept. BeginSend löst eine Ausnahme aus, wenn Sie nicht zuerst Accept, BeginAccept, Connect oder BeginConnect aufrufen.Mit einem Aufruf der BeginSend-Methode können Sie Daten in einem eigenen Ausführungsthread senden.

Sie können eine Rückrufmethode erstellen, die den AsyncCallback-Delegaten implementiert, und den Namen an die BeginSend-Methode übergeben.Dafür muss der state-Parameter mindestens den verbundenen oder den Standard-Socket enthalten, der für die Kommunikation verwendet wird.Wenn für den Rückruf mehr Informationen benötigt werden, können Sie eine kleine Klasse oder Struktur erstellen, die die Socket-Informationen und die weiteren erforderlichen Informationen enthält.Übergeben Sie eine Instanz dieser Klasse über den state-Parameter an die BeginSend-Methode.

Die Rückrufmethode muss die EndSend-Methode aufrufen.Bei einem Aufruf von BeginSend verwendet das System einen separaten Thread zum Ausführen der angegebenen Rückrufmethode und blockiert EndSend, bis der Socket die angeforderte Anzahl von Bytes sendet oder eine Ausnahme auslöst.Wenn der ursprüngliche Thread nach dem Aufruf der BeginSend-Methode blockieren soll, verwenden Sie die WaitHandle.WaitOne-Methode.Rufen Sie in der Rückrufmethode die Set-Methode für ein T:System.Threading.ManualResetEvent auf, wenn der ursprüngliche Thread weiter ausgeführt werden soll.Weitere Informationen über das Verfassen von Rückrufmethoden finden Sie unter Marshaling a Delegate as a Callback Method.

Obwohl BeginSend in erster Linie für verbindungsorientierte Protokolle konzipiert ist, ist die Verwendung auch bei verbindungslosen Protokollen möglich. In diesem Fall muss jedoch zuerst durch einen Aufruf der Connect-Methode oder der BeginConnect-Methode ein Standardremotehost eingerichtet werden.Wenn Sie ein verbindungsloses Protokoll verwenden und Daten an mehrere verschiedene Hosts senden möchten, empfiehlt sich die Verwendung von BeginSendTo.Sie können BeginSendTo auch dann noch verwenden, wenn Sie mit Connect einen Standardremotehost eingerichtet haben.Sie können außerdem vor dem Aufruf von BeginSend den Standardremotehost ändern, indem Sie Connect oder BeginConnect erneut aufrufen.Bei verbindungslosen Protokollen müssen Sie außerdem sicherstellen, dass die Größe des Puffers nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters übersteigt.Andernfalls wird das Datagramm nicht gesendet, und BeginSend löst eine SocketException aus.

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

System_CAPS_noteHinweis

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.

System_CAPS_noteHinweis

Alle von einem bestimmten Thread initiierten Ein- und Ausgaben werden beim Beenden des Threads abgebrochen.Bei einem ausstehenden asynchronen Vorgang kann ein Fehler auftreten, wenn der Thread vor Abschluss des Vorgangs beendet wird.

System_CAPS_noteHinweis

state ist eine Instanziierung einer benutzerdefinierten Klasse.

System_CAPS_noteHinweis

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.

System_CAPS_noteHinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung mit .Net Framework. Śledzenie sieci w .NET Framework.

System_CAPS_noteHinweis

Der Ausführungskontext (der Sicherheitskontext, der Benutzer, dessen Identität verwendet wird, und der Kontext des Aufrufs) wird für die asynchrone Socket-Methode zwischengespeichert.Nach der ersten Verwendung eines bestimmten Kontexts (eine bestimmte asynchrone Socket-Methode, eine bestimmte Socket-Instanz und ein bestimmter Rückruf) führen weitere Verwendungen zu einer besseren Leistung.

.NET Framework
Verfügbar seit 2.0
Zurück zum Anfang
Anzeigen:
© 2016 Microsoft