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.
Исключения
Не TcpClient подключен к удаленному узлу.
Он TcpClient был закрыт.
Примеры
В следующем примере кода используется GetStream для получения базового NetworkStreamкода. После получения NetworkStreamобъекта он отправляет и получает его с помощью методов Write и 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
Комментарии
Метод GetStream возвращает NetworkStream значение, которое можно использовать для отправки и получения данных. Класс NetworkStream наследует от Stream класса, который предоставляет широкий набор методов и свойств, используемых для упрощения сетевого взаимодействия.
Сначала необходимо вызвать Connect метод, или GetStream метод вызовет InvalidOperationExceptionисключение. После получения NetworkStreamметода вызовите Write метод для отправки данных на удаленный узел.
Read Вызовите метод для получения данных, поступающих из удаленного узла. Оба этих метода блокируются до выполнения указанной операции. Можно избежать блокировки операции чтения, проверив DataAvailable свойство. Значение true означает, что данные прибыли из удаленного узла и доступны для чтения. В этом случае Read гарантированно завершиться немедленно. Если удаленный узел завершит работу подключения, Read немедленно вернется с нулевыми байтами.
Замечание
Если вы получаете SocketExceptionкод ошибки, используйте SocketException.ErrorCode для получения определенного кода ошибки. Получив этот код, вы можете ознакомиться с документацией по коду ошибки API для сокетов Windows версии 2 , чтобы получить подробное описание ошибки.
Замечание
Этот элемент выводит сведения о трассировке при включении трассировки сети в приложении. Дополнительные сведения см. в разделе "Трассировка сети" в .NET Framework.