Was this page helpful?
Your feedback about this content is important. Let us know what you think.
Additional feedback?
1500 characters remaining
Export (0) Print
Expand All

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 methodAcceptSocketAsyncAccepts a pending connection request as an asynchronous operation.
Public methodAcceptTcpClientAccepts a pending connection request.
Public methodAcceptTcpClientAsyncAccepts a pending connection request as an asynchronous operation.
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 methodStatic memberCreateCreates a new TcpListener instance to listen on the specified port.
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 the default hash function. (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 methodStartStarts 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.

Imports System
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text
Imports Microsoft.VisualBasic

Class MyTcpListener

    Public Shared Sub Main()

	Dim server As TcpListener
            ' Set the TcpListener on port 13000. 
         Dim port As Int32 = 13000
         Dim localAddr As IPAddress = IPAddress.Parse("")

         server = New TcpListener(localAddr, port)

         ' Start listening for client requests.

         ' Buffer for reading data 
            Dim bytes(1024) As Byte 
            Dim data As String = Nothing 

         ' Enter the listening loop. 
         While True
            Console.Write("Waiting for a connection... ")

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

            data = Nothing 

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

            Dim i As Int32

            ' Loop to receive all the data sent by the client.
            i = stream.Read(bytes, 0, bytes.Length)
            While (i <> 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()
                    Dim msg As Byte() = System.Text.Encoding.ASCII.GetBytes(data)

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

               i = stream.Read(bytes, 0, bytes.Length)

            End While 

            ' Shutdown and end connection
         End While 
      Catch e As SocketException
         Console.WriteLine("SocketException: {0}", e)
      End Try

      Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")
   End Sub 'Main

End Class 'MyTcpListener 

See TcpClient for a client example.

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

  • SocketPermission 

    to establish an outgoing connection or accept an incoming request.

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