NegotiateStream.BeginWrite Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Startet einen asynchronen ByteSchreibvorgang, der s aus dem angegebenen Puffer in den Datenstrom schreibt.
public:
override IAsyncResult ^ BeginWrite(cli::array <System::Byte> ^ buffer, int offset, int count, AsyncCallback ^ asyncCallback, System::Object ^ asyncState);
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback? asyncCallback, object? asyncState);
public override IAsyncResult BeginWrite(byte[] buffer, int offset, int count, AsyncCallback asyncCallback, object asyncState);
override this.BeginWrite : byte[] * int * int * AsyncCallback * obj -> IAsyncResult
Public Overrides Function BeginWrite (buffer As Byte(), offset As Integer, count As Integer, asyncCallback As AsyncCallback, asyncState As Object) As IAsyncResult
Parameter
- buffer
- Byte[]
Ein Byte Array, das die Bytes bereitstellt, die in den Datenstrom geschrieben werden sollen.
- offset
- Int32
Der nullbasierte Speicherort, an buffer dem mit dem Lesen von Bytes begonnen werden soll, die in den Datenstrom geschrieben werden sollen.
- asyncCallback
- AsyncCallback
Ein AsyncCallback Delegat, der auf die Methode verweist, die aufgerufen werden soll, wenn der Schreibvorgang abgeschlossen ist.
- asyncState
- Object
Ein benutzerdefiniertes Objekt, das Informationen zum Schreibvorgang enthält. Dieses Objekt wird an den asyncCallback Delegaten übergeben, wenn der Vorgang abgeschlossen ist.
Gibt zurück
Ein IAsyncResult Objekt, das den Status des asynchronen Vorgangs angibt.
Ausnahmen
buffer ist null.
offset ist kleiner als 0.
-oder-
offset ist größer als die Länge von buffer.
-oder-
offset Plusanzahl ist größer als die Länge von buffer.
Fehler beim Schreibvorgang.
-oder-
Verschlüsselung wird verwendet, aber die Daten konnten nicht verschlüsselt werden.
Es wird bereits ein Schreibvorgang ausgeführt.
Dieses Objekt wurde geschlossen.
Die Authentifizierung ist nicht aufgetreten.
Beispiele
Das folgende Beispiel veranschaulicht den Beginn eines asynchronen Schreibvorgangs.
// Request authentication.
NetworkStream clientStream = client.GetStream();
NegotiateStream authStream = new NegotiateStream(clientStream, false);
// Pass the NegotiateStream as the AsyncState object
// so that it is available to the callback delegate.
Task authenticateTask = authStream
.AuthenticateAsClientAsync()
.ContinueWith(task =>
{
Console.WriteLine("Client ending authentication...");
Console.WriteLine("ImpersonationLevel: {0}", authStream.ImpersonationLevel);
});
Console.WriteLine("Client waiting for authentication...");
// Wait until the result is available.
authenticateTask.Wait();
// Display the properties of the authenticated stream.
AuthenticatedStreamReporter.DisplayProperties(authStream);
// Send a message to the server.
// Encode the test data into a byte array.
byte[] message = Encoding.UTF8.GetBytes("Hello from the client.");
Task writeTask = authStream
.WriteAsync(message, 0, message.Length)
.ContinueWith(task =>
{
Console.WriteLine("Client ending write operation...");
});
' Request authentication.
Dim clientStream = client.GetStream()
Dim authStream As New NegotiateStream(clientStream, False)
' Pass the NegotiateStream as the AsyncState object
' so that it is available to the callback delegate.
Dim ar = authStream.BeginAuthenticateAsClient(
New AsyncCallback(AddressOf EndAuthenticateCallback), authStream)
Console.WriteLine("Client waiting for authentication...")
' Wait until the result is available.
ar.AsyncWaitHandle.WaitOne()
' Display the properties of the authenticated stream.
AuthenticatedStreamReporter.DisplayProperties(authStream)
' Send a message to the server.
' Encode the test data into a byte array.
Dim message = Encoding.UTF8.GetBytes("Hello from the client.")
ar = authStream.BeginWrite(message, 0, message.Length,
New AsyncCallback(AddressOf EndWriteCallback), authStream)
Die folgende Methode wird aufgerufen, wenn der Vorgang abgeschlossen ist.
' The following method is called when the write operation completes.
Public Shared Sub EndWriteCallback(ar As IAsyncResult)
Console.WriteLine("Client ending write operation...")
Dim authStream = CType(ar.AsyncState, NegotiateStream)
' End the asynchronous operation.
authStream.EndWrite(ar)
End Sub
Hinweise
Wenn Verschlüsselung, Signatur oder Verschlüsselung und Signatur aktiviert sind, liest diese Methode die Daten aus dem Puffer, verschlüsselt, signiert oder signiert sie und überträgt sie mithilfe des zugrunde liegenden Datenstroms. Wenn keine Sicherheitsdienste wie Datenverschlüsselung oder Anmeldung verwendet werden, startet diese Methode einen asynchronen Schreibvorgang für den zugrunde liegenden Datenstrom.
Diese Methode ist asynchron und blockiert nicht, während der Vorgang abgeschlossen ist. Um zu blockieren, bis der Vorgang abgeschlossen ist, verwenden Sie die Read Methode.
Der asynchrone Lesevorgang muss durch Aufrufen der EndWrite Methode abgeschlossen werden. In der asyncCallback Regel wird die Methode vom Delegaten aufgerufen. Ausführliche Informationen zur Verwendung des asynchronen Programmiermodells finden Sie unter asynchrones Aufrufen synchroner Methoden
Die NegotiateStream Klasse unterstützt nicht mehrere gleichzeitige Schreibvorgänge. Wenn Sie versuchen, einen Schreibvorgang zu starten, während ein anderer Schreibvorgang bereits im selben Datenstrom ausgeführt wird, wird eine NotSupportedException Ausnahme ausgelöst.
Sie können diese Methode erst aufrufen, nachdem Sie sich erfolgreich authentifiziert haben. Rufen Sie zum Authentifizieren eine der AuthenticateAsClientMethoden , , AuthenticateAsClientAsync, BeginAuthenticateAsClient, AuthenticateAsServer, oder AuthenticateAsServerAsyncBeginAuthenticateAsServer Methoden auf.