TcpClient.GetStream Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Returns the NetworkStream used to send and receive data.
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
Returns
The underlying NetworkStream.
Exceptions
The TcpClient is not connected to a remote host.
The TcpClient has been closed.
Examples
The following code example uses GetStream
to obtain the underlying NetworkStream. After obtaining the NetworkStream, it sends and receives using its Write and Read methods.
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
Remarks
The GetStream
method returns a NetworkStream that you can use to send and receive data. The NetworkStream
class inherits from the Stream class, which provides a rich collection of methods and properties used to facilitate network communications.
You must call the Connect method first, or the GetStream method will throw an InvalidOperationException. After you have obtained the NetworkStream
, call the Write method to send data to the remote host. Call the Read method to receive data arriving from the remote host. Both of these methods block until the specified operation is performed. You can avoid blocking on a read operation by checking the DataAvailable property. A true
value means that data has arrived from the remote host and is available for reading. In this case, Read is guaranteed to complete immediately. If the remote host has shutdown its connection, Read will immediately return with zero bytes.
Note
If you receive a SocketException, use SocketException.ErrorCode to obtain the specific error code. After you have obtained this code, you can refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.
Note
This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing in the .NET Framework.