TcpClient.GetStream Метод

Определение

Возвращает объект NetworkStream, используемый для отправки и получения данных.

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

Возвращаемое значение

NetworkStream

Базовый объект NetworkStream.

Исключения

Объект TcpClient не подключен к удаленному узлу.

TcpClient был закрыт.

Примеры

В следующем примере кода используется GetStream для получения базового NetworkStreamобъекта. После получения NetworkStream, он отправляет и получает с помощью его Write и Read методов.

TcpClient^ tcpClient = gcnew TcpClient;

// Uses the GetStream public method to return the NetworkStream.
NetworkStream^ netStream = tcpClient->GetStream();
if ( netStream->CanWrite )
{
   array<Byte>^sendBytes = 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;
}

if ( netStream->CanRead )
{
   
   // Reads NetworkStream into a byte buffer.
   array<Byte>^bytes = gcnew array<Byte>(tcpClient->ReceiveBufferSize);
   
   // Read can return anything from 0 to numBytesToRead. 
   // This method blocks until at least one byte is read.
   netStream->Read( bytes, 0, (int)tcpClient->ReceiveBufferSize );
   
   // Returns the data received from the host to the console.
   String^ returndata = Encoding::UTF8->GetString( bytes );
   Console::WriteLine( "This is what the host returned to you: {0}", 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;
}
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

Комментарии

Метод GetStream возвращает объект NetworkStream , который можно использовать для отправки и получения данных. Класс NetworkStream наследуется от Stream класса, который предоставляет широкий набор методов и свойств, используемых для упрощения сетевого взаимодействия.

Сначала необходимо вызвать Connect метод, или GetStream метод вызовет InvalidOperationExceptionисключение . После получения NetworkStreamметода вызовите метод для отправки Write данных на удаленный узел. Read Вызовите метод для получения данных, поступающих от удаленного узла. Оба этих метода блокируются до выполнения указанной операции. Вы можете избежать блокировки операции чтения, проверив DataAvailable свойство. Значение true означает, что данные поступили с удаленного узла и доступны для чтения. В этом случае Read гарантируется немедленное завершение. Если удаленный узел завершит работу подключения, Read немедленно вернется с нулевыми байтами.

Примечание

При получении SocketExceptionкода ошибки используется для SocketException.ErrorCode получения определенного кода ошибки. Получив этот код, вы можете ознакомиться с документацией по коду ошибки API Windows sockets версии 2, чтобы получить подробное описание ошибки.

Примечание

Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в разделе "Трассировка сети" в платформа .NET Framework.

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

См. также раздел