SslStream.Write Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Grava dados nesse fluxo.
Sobrecargas
Write(Byte[]) |
Grava os dados especificados nesse fluxo. |
Write(Byte[], Int32, Int32) |
Grave o número especificado de Bytes no fluxo subjacente usando o buffer e o deslocamento especificados. |
Write(Byte[])
- Origem:
- SslStream.cs
- Origem:
- SslStream.cs
- Origem:
- SslStream.cs
Grava os dados especificados nesse fluxo.
public:
void Write(cli::array <System::Byte> ^ buffer);
public void Write (byte[] buffer);
override this.Write : byte[] -> unit
Public Sub Write (buffer As Byte())
Parâmetros
Exceções
buffer
é null
.
A operação de gravação falhou.
Já existe uma operação de gravação em andamento.
Este objeto foi fechado.
A autenticação não ocorreu.
Exemplos
O exemplo de código a seguir demonstra a gravação em um autenticado 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
Comentários
Esse método é bloqueado enquanto a operação é concluída. Para evitar o bloqueio enquanto a operação é concluída, use o BeginWrite método .
Não é possível chamar esse método até que você tenha se autenticado com êxito. Para autenticar, chame um dos AuthenticateAsClientmétodos , ou BeginAuthenticateAsClient, AuthenticateAsServerBeginAuthenticateAsServer .
A SslStream classe não dá suporte a várias operações de gravação simultâneas.
Aplica-se a
Write(Byte[], Int32, Int32)
- Origem:
- SslStream.cs
- Origem:
- SslStream.cs
- Origem:
- SslStream.cs
Grave o número especificado de Bytes no fluxo subjacente usando o buffer e o deslocamento especificados.
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)
Parâmetros
- offset
- Int32
Um Int32 que contém o local baseado em zero em buffer
no qual será iniciada a leitura dos bytes a serem gravados no fluxo.
Exceções
buffer
é null
.
offset
é menor que zero.
- ou -
offset
é maior que o comprimento do buffer
.
- ou -
A soma de offset
com a contagem é maior que o comprimento de buffer
.
A operação de gravação falhou.
Já existe uma operação de gravação em andamento.
Este objeto foi fechado.
A autenticação não ocorreu.
Comentários
Esse método é bloqueado enquanto a operação é concluída. Para evitar o bloqueio enquanto a operação conclui a operação, use o BeginWrite método .
Não é possível chamar esse método até que você tenha se autenticado com êxito. Para autenticar, chame um dos AuthenticateAsClientmétodos , ou BeginAuthenticateAsClient, AuthenticateAsServerBeginAuthenticateAsServer .
A SslStream classe não dá suporte a várias operações de gravação simultâneas.