Поделиться через


SslStream.Write Метод

Определение

Записывает данные в этот поток.

Перегрузки

Write(Byte[])

Записывает в этот поток указанные данные.

Write(Byte[], Int32, Int32)

Записывает указанное количество элементов Byte в базовый поток, используя заданный буфер (параметр buffer) и начальное расположение (параметр offset).

Write(Byte[])

Исходный код:
SslStream.cs
Исходный код:
SslStream.cs
Исходный код:
SslStream.cs

Записывает в этот поток указанные данные.

public:
 void Write(cli::array <System::Byte> ^ buffer);
public void Write (byte[] buffer);
override this.Write : byte[] -> unit
Public Sub Write (buffer As Byte())

Параметры

buffer
Byte[]

Массив элементов Byte, предоставляющий байты для записи в поток.

Исключения

buffer имеет значение null.

Не удалось выполнить операцию записи.

Уже существует выполняющаяся операция записи.

Объект закрыт.

Проверка подлинности не выполнялась.

Примеры

В следующем примере кода демонстрируется запись в прошедший проверку подлинности SslStream.

static void ProcessClient( TcpClient^ client )
{
   
   // A client has connected. Create the 
   // SslStream using the client's network stream.
   SslStream^ sslStream = gcnew SslStream( client->GetStream(),false );
   
   // Authenticate the server but don't require the client to authenticate.
   try
   {
      sslStream->AuthenticateAsServer( serverCertificate, false, true );
      // false == no client cert required; true == check cert revocation.
      
      // Display the properties and settings for the authenticated stream.
      DisplaySecurityLevel( sslStream );
      DisplaySecurityServices( sslStream );
      DisplayCertificateInformation( sslStream );
      DisplayStreamProperties( sslStream );
      
      // Set timeouts for the read and write to 5 seconds.
      sslStream->ReadTimeout = 5000;
      sslStream->WriteTimeout = 5000;
      
      // Read a message from the client.   
      Console::WriteLine( L"Waiting for client message..." );
      String^ messageData = ReadMessage( sslStream );
      Console::WriteLine( L"Received: {0}", messageData );
      
      // Write a message to the client.
      array<Byte>^message = Encoding::UTF8->GetBytes( L"Hello from the server.<EOF>" );
      Console::WriteLine( L"Sending hello message." );
      sslStream->Write( message );
   }
   catch ( AuthenticationException^ e ) 
   {
      Console::WriteLine( L"Exception: {0}", e->Message );
      if ( e->InnerException != nullptr )
      {
         Console::WriteLine( L"Inner exception: {0}", e->InnerException->Message );
      }
      Console::WriteLine( L"Authentication failed - closing the connection." );
      sslStream->Close();
      client->Close();
      return;
   }
   finally
   {
      
      // The client stream will be closed with the sslStream
      // because we specified this behavior when creating
      // the sslStream.
      sslStream->Close();
      client->Close();
   }

}
static void ProcessClient (TcpClient client)
{
    // A client has connected. Create the
    // SslStream using the client's network stream.
    SslStream sslStream = new SslStream(
        client.GetStream(), false);
    // Authenticate the server but don't require the client to authenticate.
    try
    {
        sslStream.AuthenticateAsServer(serverCertificate, clientCertificateRequired: false, checkCertificateRevocation: true);

        // Display the properties and settings for the authenticated stream.
        DisplaySecurityLevel(sslStream);
        DisplaySecurityServices(sslStream);
        DisplayCertificateInformation(sslStream);
        DisplayStreamProperties(sslStream);

        // Set timeouts for the read and write to 5 seconds.
        sslStream.ReadTimeout = 5000;
        sslStream.WriteTimeout = 5000;
        // Read a message from the client.
        Console.WriteLine("Waiting for client message...");
        string messageData = ReadMessage(sslStream);
        Console.WriteLine("Received: {0}", messageData);

        // Write a message to the client.
        byte[] message = Encoding.UTF8.GetBytes("Hello from the server.<EOF>");
        Console.WriteLine("Sending hello message.");
        sslStream.Write(message);
    }
    catch (AuthenticationException e)
    {
        Console.WriteLine("Exception: {0}", e.Message);
        if (e.InnerException != null)
        {
            Console.WriteLine("Inner exception: {0}", e.InnerException.Message);
        }
        Console.WriteLine ("Authentication failed - closing the connection.");
        sslStream.Close();
        client.Close();
        return;
    }
    finally
    {
        // The client stream will be closed with the sslStream
        // because we specified this behavior when creating
        // the sslStream.
        sslStream.Close();
        client.Close();
    }
}
Private Shared Sub ProcessClient(client As TcpClient)
    ' A client has connected. Create the 
    ' SslStream using the client's network stream.
    Dim sslStream = New SslStream(client.GetStream(), False)

    Try

        sslStream.AuthenticateAsServer(serverCertificate, clientCertificateRequired:=False, checkCertificateRevocation:=True)
        ' Display the properties And settings for the authenticated stream.
        DisplaySecurityLevel(sslStream)
        DisplaySecurityServices(sslStream)
        DisplayCertificateInformation(sslStream)
        DisplayStreamProperties(sslStream)

        ' Set timeouts for the read and write to 5 seconds.
        sslStream.ReadTimeout = 5000
        sslStream.WriteTimeout = 5000

        ' Read a message from the client.   
        Console.WriteLine("Waiting for client message...")
        Dim messageData As String = ReadMessage(sslStream)
        Console.WriteLine("Received: {0}", messageData)

        ' Write a message to the client.
        Dim message As Byte() = Encoding.UTF8.GetBytes("Hello from the server.<EOF>")
        Console.WriteLine("Sending hello message.")
        sslStream.Write(message)
    Catch e As AuthenticationException
        Console.WriteLine("Exception: {0}", e.Message)

        If e.InnerException IsNot Nothing Then
            Console.WriteLine("Inner exception: {0}", e.InnerException.Message)
        End If

        Console.WriteLine("Authentication failed - closing the connection.")
        sslStream.Close()
        client.Close()
        Return
    Finally
        ' The client stream will be closed with the sslStream
        ' because we specified this behavior when creating
        ' the sslStream.
        sslStream.Close()
        client.Close()
    End Try
End Sub

Комментарии

Этот метод блокируется по завершении операции. Чтобы предотвратить блокировку во время завершения операции, используйте BeginWrite метод .

Вы не сможете вызвать этот метод, пока не пройдете проверку подлинности. Для проверки подлинности AuthenticateAsClientвызовите один из методов , или BeginAuthenticateAsClient, AuthenticateAsServer. BeginAuthenticateAsServer

Класс SslStream не поддерживает несколько одновременных операций записи.

Применяется к

Write(Byte[], Int32, Int32)

Исходный код:
SslStream.cs
Исходный код:
SslStream.cs
Исходный код:
SslStream.cs

Записывает указанное количество элементов Byte в базовый поток, используя заданный буфер (параметр buffer) и начальное расположение (параметр offset).

public:
 override void Write(cli::array <System::Byte> ^ buffer, int offset, int count);
public override void Write (byte[] buffer, int offset, int count);
override this.Write : byte[] * int * int -> unit
Public Overrides Sub Write (buffer As Byte(), offset As Integer, count As Integer)

Параметры

buffer
Byte[]

Массив элементов Byte, предоставляющий байты для записи в поток.

offset
Int32

Значение Int32, содержащее расположение (начиная с нуля) в массиве buffer, с которого требуется начинать чтение байтов, записываемых в поток.

count
Int32

Значение Int32, содержащее количество байтов, считываемых из массива buffer.

Исключения

buffer имеет значение null.

Значение параметра offset меньше нуля.

-или-

Значение offset превышает длину buffer.

-или-

Сумма значений offset и count превышает длину массива buffer.

Не удалось выполнить операцию записи.

Уже существует выполняющаяся операция записи.

Объект закрыт.

Проверка подлинности не выполнялась.

Комментарии

Этот метод блокируется по завершении операции. Чтобы предотвратить блокировку во время завершения операции, используйте BeginWrite метод .

Вы не сможете вызвать этот метод, пока не пройдете проверку подлинности. Для проверки подлинности AuthenticateAsClientвызовите один из методов , или BeginAuthenticateAsClient, AuthenticateAsServer. BeginAuthenticateAsServer

Класс SslStream не поддерживает несколько одновременных операций записи.

Применяется к