.NET Framework Class Library
TcpClient..::.GetStream Method

Returns the NetworkStream used to send and receive data.

Namespace:  System.Net.Sockets
Assembly:  System (in System.dll)
Syntax

Visual Basic (Declaration)
Public Function GetStream As NetworkStream
Visual Basic (Usage)
Dim instance As TcpClient
Dim returnValue As NetworkStream

returnValue = instance.GetStream()
C#
public NetworkStream GetStream()
Visual C++
public:
NetworkStream^ GetStream()
JScript
public function GetStream() : NetworkStream

Return Value

Type: System.Net.Sockets..::.NetworkStream
The underlying NetworkStream.
Exceptions

ExceptionCondition
InvalidOperationException

The TcpClient is not connected to a remote host.

ObjectDisposedException

The TcpClient has been closed.

Remarks

GetStream 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.

NoteNote:

You must close the NetworkStream when you are through sending and receiving data. Closing TcpClient does not release the NetworkStream.

NoteNote:

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 in MSDN for a detailed description of the error.

NoteNote:

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing.

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.

Visual Basic
   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 'MyTcpClientCommunicator
C#
TcpClient tcpClient = new TcpClient ();

// Uses the GetStream public method to return the NetworkStream.
NetworkStream netStream = tcpClient.GetStream ();

if (netStream.CanWrite)
{
    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.
    byte[] bytes = new 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: " + 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;
}
netStream.Close();

Visual C++
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;
}


CPP_OLD
   TcpClient* tcpClient = new TcpClient();
   // Uses the GetStream public method to return the NetworkStream.

       NetworkStream* netStream = tcpClient->GetStream();
       if(netStream->CanWrite)
       {
           Byte sendBytes[] = Encoding::UTF8->GetBytes(S"Is anybody there?");
           netStream->Write(sendBytes, 0, sendBytes->Length);
       }
       else
       {
           Console::WriteLine(S"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.
         Byte bytes[] = new 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(S"This is what the host returned to you: {0}", returndata);
       }
       else
       {
            Console::WriteLine(S"You cannot read data from this stream.");
            tcpClient->Close();
            
            // Closing the tcpClient instance does not close the network stream.
            netStream->Close ();
            return;
       }


Platforms

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Version Information

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0
See Also

Reference

Tags :


Community Content

LOBOMINATOR
Bug in Code
The provided code in the sample contraddicts the remarks and the implemenation

You must call the Connect method first, or the GetStream method will throw an InvalidOperationException.

if (!this.Client.Connected) { thrownewInvalidOperationException(SR.GetString("net_notconnected")); }

Please correct. Thanks
Tags : code bug sample

Page view tracker