SslStream.BeginWrite(Byte[], Int32, Int32, AsyncCallback, Object) Metod

Definition

Påbörjar en asynkron skrivåtgärd som skriver Bytes från den angivna bufferten till dataströmmen.

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

Parametrar

buffer
Byte[]

En Byte matris som tillhandahåller byte som ska skrivas till strömmen.

offset
Int32

Den nollbaserade plats buffer där byte som ska skrivas till strömmen ska börja läsas.

count
Int32

Ett Int32 värde som anger antalet byte som ska läsas från buffer.

asyncCallback
AsyncCallback

Ett AsyncCallback ombud som refererar till metoden för att anropa när skrivåtgärden är klar.

asyncState
Object

Ett användardefinierat objekt som innehåller information om skrivåtgärden. Det här objektet skickas till ombudet asyncCallback när åtgärden är klar.

Returer

Ett IAsyncResult objekt som anger status för den asynkrona åtgärden.

Undantag

buffer är null.

offset är mindre än noll.

-eller-

offset är större än längden på buffer.

-eller-

offset + antal är större än längden på buffer.

Skrivåtgärden misslyckades.

Det pågår redan en skrivåtgärd.

Det här objektet har stängts.

Autentiseringen har inte inträffat.

Exempel

Följande kodexempel visar hur du anropar den här metoden.

void ReadCallback(IAsyncResult ar)
{
    ClientState state = (ClientState) ar.AsyncState;
    SslStream stream = state.stream;
    // Read the  message sent by the client.
    // The end of the message is signaled using the
    // "<EOF>" marker.
    int byteCount = -1;
    try
    {
        Console.WriteLine("Reading data from the client.");
        byteCount = stream.EndRead(ar);
        // Use Decoder class to convert from bytes to UTF8
        // in case a character spans two buffers.
        Decoder decoder = Encoding.UTF8.GetDecoder();
        char[] chars = new char[decoder.GetCharCount(state.buffer,0, byteCount)];
        decoder.GetChars(state.buffer, 0, byteCount, chars,0);
        state.readData.Append (chars);
        // Check for EOF or an empty message.
        if (state.readData.ToString().IndexOf("<EOF>") == -1 && byteCount != 0)
        {
            // We are not finished reading.
            // Asynchronously read more message data from  the client.
            stream.BeginRead(state.buffer, 0, state.buffer.Length,
                new AsyncCallback(ReadCallback),
                state);
        }
        else
        {
            Console.WriteLine("Message from the client: {0}", state.readData.ToString());
        }

        // Encode a test message into a byte array.
        // Signal the end of the message using "<EOF>".
        byte[] message = Encoding.UTF8.GetBytes("Hello from the server.<EOF>");
        // Asynchronously send the message to the client.
        stream.BeginWrite(message, 0, message.Length,
            new AsyncCallback(WriteCallback),
            state);
    }
    catch (Exception readException)
    {
        Console.WriteLine("Read error: {0}", readException.Message);
        state.Close();
        return;
    }
}

Gäller för