This documentation is archived and is not being maintained.

TcpListener Class

Listens for connections from TCP network clients.


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

public class TcpListener

The TcpListener type exposes the following members.

Public methodTcpListener(Int32) Obsolete. Initializes a new instance of the TcpListener class that listens on the specified port.
Public methodTcpListener(IPEndPoint)Initializes a new instance of the TcpListener class with the specified local endpoint.
Public methodTcpListener(IPAddress, Int32)Initializes a new instance of the TcpListener class that listens for incoming connection attempts on the specified local IP address and port number.

Protected propertyActiveGets a value that indicates whether TcpListener is actively listening for client connections.
Public propertyExclusiveAddressUseGets or sets a Boolean value that specifies whether the TcpListener allows only one underlying socket to listen to a specific port.
Public propertyLocalEndpointGets the underlying EndPoint of the current TcpListener.
Public propertyServerGets the underlying network Socket.

Public methodAcceptSocketAccepts a pending connection request.
Public methodAcceptTcpClientAccepts a pending connection request
Public methodAllowNatTraversalEnables or disables Network Address Translation (NAT) traversal on a TcpListener instance.
Public methodBeginAcceptSocketBegins an asynchronous operation to accept an incoming connection attempt.
Public methodBeginAcceptTcpClientBegins an asynchronous operation to accept an incoming connection attempt.
Public methodEndAcceptSocketAsynchronously accepts an incoming connection attempt and creates a new Socket to handle remote host communication.
Public methodEndAcceptTcpClientAsynchronously accepts an incoming connection attempt and creates a new TcpClient to handle remote host communication.
Public methodEquals(Object)Determines whether the specified Object is equal to the current Object. (Inherited from Object.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodGetHashCodeServes as a hash function for a particular type. (Inherited from Object.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodPendingDetermines if there are pending connection requests.
Public methodStart()Starts listening for incoming connection requests.
Public methodStart(Int32)Starts listening for incoming connection requests with a maximum number of pending connection.
Public methodStopCloses the listener.
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)

The TcpListener class provides simple methods that listen for and accept incoming connection requests in blocking synchronous mode. You can use either a TcpClient or a Socket to connect with a TcpListener. Create a TcpListener using an IPEndPoint, a Local IP address and port number, or just a port number. Specify Any for the local IP address and 0 for the local port number if you want the underlying service provider to assign those values for you. If you choose to do this, you can use the LocalEndpoint property to identify the assigned information, after the socket has connected.

Use the Start method to begin listening for incoming connection requests. Start will queue incoming connections until you either call the Stop method or it has queued MaxConnections. Use either AcceptSocket or AcceptTcpClient to pull a connection from the incoming connection request queue. These two methods will block. If you want to avoid blocking, you can use the Pending method first to determine if connection requests are available in the queue.

Call the Stop method to close the TcpListener.


The Stop method does not close any accepted connections. You are responsible for closing these separately.

The following code example creates a TcpListener.

using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Text;

class MyTcpListener
  public static void Main()
    TcpListener server=null;   
      // Set the TcpListener on port 13000.
      Int32 port = 13000;
      IPAddress localAddr = IPAddress.Parse("");

      // TcpListener server = new TcpListener(port);
      server = new TcpListener(localAddr, port);

      // Start listening for client requests.

      // Buffer for reading data
      Byte[] bytes = new Byte[256];
      String data = null;

      // Enter the listening loop.
        Console.Write("Waiting for a connection... ");

        // Perform a blocking call to accept requests.
        // You could also user server.AcceptSocket() here.
        TcpClient client = server.AcceptTcpClient();            

        data = null;

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

        int i;

        // Loop to receive all the data sent by the client.
        while((i = stream.Read(bytes, 0, bytes.Length))!=0) 
          // Translate data bytes to a ASCII string.
          data = System.Text.Encoding.ASCII.GetString(bytes, 0, i);
          Console.WriteLine("Received: {0}", data);

          // Process the data sent by the client.
          data = data.ToUpper();

          byte[] msg = System.Text.Encoding.ASCII.GetBytes(data);

          // Send back a response.
          stream.Write(msg, 0, msg.Length);
          Console.WriteLine("Sent: {0}", data);            

        // Shutdown and end connection
    catch(SocketException e)
      Console.WriteLine("SocketException: {0}", e);
       // Stop listening for new clients.

    Console.WriteLine("\nHit enter to continue...");

See TcpClient for a client example.

.NET Framework

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

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

  • SocketPermission 

    to establish an outgoing connection or accept an incoming request.

Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

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