Partilhar via


TcpClient.GetStream Método

Definição

Retorna o NetworkStream usado para enviar e receber dados.

public:
 System::Net::Sockets::NetworkStream ^ GetStream();
public System.Net.Sockets.NetworkStream GetStream();
member this.GetStream : unit -> System.Net.Sockets.NetworkStream
Public Function GetStream () As NetworkStream

Retornos

O NetworkStream subjacente.

Exceções

O TcpClient não está conectado a um host remoto.

Exemplos

O exemplo de código a seguir usa GetStream para obter o subjacente NetworkStream. Depois de obter o NetworkStream, ele envia e recebe usando seus Write métodos e Read .

using TcpClient tcpClient = new TcpClient();
tcpClient.ConnectAsync("contoso.com", 5000);

using NetworkStream netStream = tcpClient.GetStream();

// Send some data to the peer.
byte[] sendBuffer = Encoding.UTF8.GetBytes("Is anybody there?");
netStream.Write(sendBuffer);

// Receive some data from the peer.
byte[] receiveBuffer = new byte[1024];
int bytesReceived = netStream.Read(receiveBuffer);
string data = Encoding.UTF8.GetString(receiveBuffer.AsSpan(0, bytesReceived));

Console.WriteLine($"This is what the peer sent to you: {data}");
     Dim tcpClient As New TcpClient()
     ' Uses the GetStream public method to return the NetworkStream.

        Dim netStream As NetworkStream = tcpClient.GetStream()
        If netStream.CanWrite Then
           Dim sendBytes As [Byte]() = Encoding.UTF8.GetBytes("Is anybody there?")
           netStream.Write(sendBytes, 0, sendBytes.Length)
        Else
           Console.WriteLine("You cannot write data to this stream.")
           tcpClient.Close()
           ' Closing the tcpClient instance does not close the network stream.
           netStream.Close()
           Return
        End If
        If netStream.CanRead Then
           
           ' Reads the NetworkStream into a byte buffer.
           Dim bytes(tcpClient.ReceiveBufferSize) As Byte
           ' Read can return anything from 0 to numBytesToRead. 
           ' This method blocks until at least one byte is read.
           netStream.Read(bytes, 0, CInt(tcpClient.ReceiveBufferSize))
           
           ' Returns the data received from the host to the console.
           Dim returndata As String = Encoding.ASCII.GetString(bytes)
           Console.WriteLine(("This is what the host returned to you: " + returndata))
        Else
           Console.WriteLine("You cannot read data from this stream.")
           tcpClient.Close()
           ' Closing the tcpClient instance does not close the network stream.
           netStream.Close()
           Return
        End If

     ' Uses the Close public method to close the network stream and socket.
     tcpClient.Close()
  End Sub

Comentários

O GetStream método retorna um NetworkStream que você pode usar para enviar e receber dados. A NetworkStream classe herda da Stream classe , que fornece uma coleção avançada de métodos e propriedades usadas para facilitar as comunicações de rede.

Você deve chamar o Connect método primeiro ou o GetStream método gerará um InvalidOperationException. Depois de obter o NetworkStream, chame o Write método para enviar dados para o host remoto. Chame o Read método para receber dados que chegam do host remoto. Esses dois métodos são bloqueados até que a operação especificada seja executada. Você pode evitar o bloqueio em uma operação de leitura verificando a DataAvailable propriedade . Um true valor significa que os dados chegaram do host remoto e estão disponíveis para leitura. Nesse caso, Read é garantido que seja concluído imediatamente. Se o host remoto tiver desligado sua conexão, Read retornará imediatamente com zero bytes.

Observação

Se você receber um SocketException, use SocketException.ErrorCode para obter o código de erro específico. Depois de obter esse código, você pode consultar a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede no .NET Framework.

Aplica-se a

Confira também