TcpClient Class
 

Provides client connections for TCP network services.

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

SystemObject
  System.Net.SocketsTcpClient

public class TcpClient : IDisposable
public ref class TcpClient : IDisposable
type TcpClient = 
    class
        interface IDisposable
    end
Public Class TcpClient
	Implements IDisposable
NameDescription
System_CAPS_pubmethod TcpClient

Initializes a new instance of the TcpClient class.

System_CAPS_pubmethod TcpClient

Initializes a new instance of the TcpClient class with the specified family.

System_CAPS_pubmethod TcpClient

Initializes a new instance of the TcpClient class and binds it to the specified local endpoint.

System_CAPS_pubmethod TcpClient

Initializes a new instance of the TcpClient class and connects to the specified port on the specified host.

NameDescription
System_CAPS_protproperty

Gets or set a value that indicates whether a connection has been made.

System_CAPS_pubproperty

Gets the amount of data that has been received from the network and is available to be read.

System_CAPS_pubproperty

Gets or sets the underlying Socket.

System_CAPS_pubproperty

Gets a value indicating whether the underlying Socket for a TcpClient is connected to a remote host.

System_CAPS_pubproperty

Gets or sets a Boolean value that specifies whether the TcpClient allows only one client to use a port.

System_CAPS_pubproperty

Gets or sets information about the linger state of the associated socket.

System_CAPS_pubproperty

Gets or sets a value that disables a delay when send or receive buffers are not full.

System_CAPS_pubproperty

Gets or sets the size of the receive buffer.

System_CAPS_pubproperty

Gets or sets the amount of time a TcpClient will wait to receive data once a read operation is initiated.

System_CAPS_pubproperty

Gets or sets the size of the send buffer.

System_CAPS_pubproperty

Gets or sets the amount of time a TcpClient will wait for a send operation to complete successfully.

NameDescription
System_CAPS_pubmethod BeginConnect

Begins an asynchronous request for a remote host connection. The remote host is specified by an IPAddress and a port number ( Int32).

System_CAPS_pubmethod BeginConnect

Begins an asynchronous request for a remote host connection. The remote host is specified by an IPAddress array and a port number ( Int32).

System_CAPS_pubmethod BeginConnect

Begins an asynchronous request for a remote host connection. The remote host is specified by a host name ( String) and a port number ( Int32).

System_CAPS_pubmethod Close

Disposes this TcpClient instance and requests that the underlying TCP connection be closed.

System_CAPS_pubmethod Connect

Connects the client to a remote TCP host using the specified IP address and port number.

System_CAPS_pubmethod Connect

Connects the client to a remote TCP host using the specified IP addresses and port number.

System_CAPS_pubmethod Connect

Connects the client to a remote TCP host using the specified remote network endpoint.

System_CAPS_pubmethod Connect

Connects the client to the specified port on the specified host.

System_CAPS_pubmethod ConnectAsync

Connects the client to a remote TCP host using the specified IP address and port number as an asynchronous operation.

System_CAPS_pubmethod ConnectAsync

Connects the client to a remote TCP host using the specified IP addresses and port number as an asynchronous operation.

System_CAPS_pubmethod ConnectAsync

Connects the client to the specified TCP port on the specified host as an asynchronous operation.

System_CAPS_pubmethod Dispose

Releases the managed and unmanaged resources used by the TcpClient.

System_CAPS_protmethod Dispose

Releases the unmanaged resources used by the TcpClient and optionally releases the managed resources.

System_CAPS_pubmethod EndConnect

Ends a pending asynchronous connection attempt.

System_CAPS_pubmethod Equals

Determines whether the specified object is equal to the current object.(Inherited from Object.)

System_CAPS_protmethod Finalize

Frees resources used by the TcpClient class.(Overrides ObjectFinalize.)

System_CAPS_pubmethod GetHashCode

Serves as the default hash function. (Inherited from Object.)

System_CAPS_pubmethod GetStream

Returns the NetworkStream used to send and receive data.

System_CAPS_pubmethod GetType

Gets the Type of the current instance.(Inherited from Object.)

System_CAPS_protmethod MemberwiseClone

Creates a shallow copy of the current Object.(Inherited from Object.)

System_CAPS_pubmethod ToString

Returns a string that represents the current object.(Inherited from Object.)

The TcpClient class provides simple methods for connecting, sending, and receiving stream data over a network in synchronous blocking mode.

In order for TcpClient to connect and exchange data, a TcpListener or Socket created with the TCP ProtocolType must be listening for incoming connection requests. You can connect to this listener in one of the following two ways:

  • Create a TcpClient and call one of the three available Connect methods.

  • Create a TcpClient using the host name and port number of the remote host. This constructor will automatically attempt a connection.

System_CAPS_noteNote

If you want to send connectionless datagrams in synchronous blocking mode, use the UdpClient class.

Notes to Inheritors:

To send and receive data, use the GetStream method to obtain a NetworkStream. Call the Write and Read methods of the NetworkStream to send and receive data with the remote host. Use the Close method to release all resources associated with the TcpClient.

The following code example establishes a TcpClient connection.

static void Connect(String server, String message) 
{
  try 
  {
    // Create a TcpClient.
    // Note, for this client to work you need to have a TcpServer 
    // connected to the same address as specified by the server, port
    // combination.
    Int32 port = 13000;
    TcpClient client = new TcpClient(server, port);

    // Translate the passed message into ASCII and store it as a Byte array.
    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);         

    // Get a client stream for reading and writing.
   //  Stream stream = client.GetStream();

    NetworkStream stream = client.GetStream();

    // Send the message to the connected TcpServer. 
    stream.Write(data, 0, data.Length);

    Console.WriteLine("Sent: {0}", message);         

    // Receive the TcpServer.response.

    // Buffer to store the response bytes.
    data = new Byte[256];

    // String to store the response ASCII representation.
    String responseData = String.Empty;

    // Read the first batch of the TcpServer response bytes.
    Int32 bytes = stream.Read(data, 0, data.Length);
    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
    Console.WriteLine("Received: {0}", responseData);         

    // Close everything.
    stream.Close();         
    client.Close();         
  } 
  catch (ArgumentNullException e) 
  {
    Console.WriteLine("ArgumentNullException: {0}", e);
  } 
  catch (SocketException e) 
  {
    Console.WriteLine("SocketException: {0}", e);
  }

  Console.WriteLine("\n Press Enter to continue...");
  Console.Read();
}
Shared Sub Connect(server As [String], message As [String])
   Try
      ' Create a TcpClient.
      ' Note, for this client to work you need to have a TcpServer 
      ' connected to the same address as specified by the server, port
      ' combination.
      Dim port As Int32 = 13000
      Dim client As New TcpClient(server, port)

      ' Translate the passed message into ASCII and store it as a Byte array.
      Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)

      ' Get a client stream for reading and writing.
      '  Stream stream = client.GetStream();
      Dim stream As NetworkStream = client.GetStream()

      ' Send the message to the connected TcpServer. 
      stream.Write(data, 0, data.Length)

      Console.WriteLine("Sent: {0}", message)

      ' Receive the TcpServer.response.
      ' Buffer to store the response bytes.
      data = New [Byte](256) {}

      ' String to store the response ASCII representation.
      Dim responseData As [String] = [String].Empty

      ' Read the first batch of the TcpServer response bytes.
      Dim bytes As Int32 = stream.Read(data, 0, data.Length)
      responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
      Console.WriteLine("Received: {0}", responseData)

      ' Close everything.
      stream.Close()
      client.Close()
   Catch e As ArgumentNullException
      Console.WriteLine("ArgumentNullException: {0}", e)
   Catch e As SocketException
      Console.WriteLine("SocketException: {0}", e)
   End Try

   Console.WriteLine(ControlChars.Cr + " Press Enter to continue...")
   Console.Read()
End Sub 'Connect
void Connect( String^ server, String^ message )
{
   try
   {
      // Create a TcpClient.
      // Note, for this client to work you need to have a TcpServer 
      // connected to the same address as specified by the server, port
      // combination.
      Int32 port = 13000;
      TcpClient^ client = gcnew TcpClient( server,port );

      // Translate the passed message into ASCII and store it as a Byte array.
      array<Byte>^data = Text::Encoding::ASCII->GetBytes( message );

      // Get a client stream for reading and writing.
      //  Stream stream = client->GetStream();

      NetworkStream^ stream = client->GetStream();

      // Send the message to the connected TcpServer. 
      stream->Write( data, 0, data->Length );

      Console::WriteLine( "Sent: {0}", message );

      // Receive the TcpServer::response.

      // Buffer to store the response bytes.
      data = gcnew array<Byte>(256);

      // String to store the response ASCII representation.
      String^ responseData = String::Empty;

      // Read the first batch of the TcpServer response bytes.
      Int32 bytes = stream->Read( data, 0, data->Length );
      responseData = Text::Encoding::ASCII->GetString( data, 0, bytes );
      Console::WriteLine( "Received: {0}", responseData );

      // Close everything.
      client->Close();
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e );
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "SocketException: {0}", e );
   }

   Console::WriteLine( "\n Press Enter to continue..." );
   Console::Read();
}
SocketPermission

Permission to establish an outgoing connection or accept an incoming request.

.NET Framework
Available since 1.1

Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top