TcpListener Classe

Definição

Escuta ligações de clientes de rede TCP.

public ref class TcpListener : IDisposable
public ref class TcpListener
public class TcpListener : IDisposable
public class TcpListener
type TcpListener = class
    interface IDisposable
type TcpListener = class
Public Class TcpListener
Implements IDisposable
Public Class TcpListener
Herança
TcpListener
Implementações

Exemplos

O exemplo de código seguinte cria um 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;
    try
    {
      // Set the TcpListener on port 13000.
      Int32 port = 13000;
      IPAddress localAddr = IPAddress.Parse("127.0.0.1");

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

      // Start listening for client requests.
      server.Start();

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

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

        // Perform a blocking call to accept requests.
        // You could also use server.AcceptSocket() here.
        using TcpClient client = server.AcceptTcpClient();
        Console.WriteLine("Connected!");

        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);
        }
      }
    }
    catch(SocketException e)
    {
      Console.WriteLine("SocketException: {0}", e);
    }
    finally
    {
      server.Stop();
    }

    Console.WriteLine("\nHit enter to continue...");
    Console.Read();
  }
}
Imports System.IO
Imports System.Net
Imports System.Net.Sockets
Imports System.Text

Class MyTcpListener

    Public Shared Sub Main()

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

         server = New TcpListener(localAddr, port)
         
         ' Start listening for client requests.
         server.Start()
         
         ' 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 use server.AcceptSocket() here.
            Dim client As TcpClient = server.AcceptTcpClient()
            Console.WriteLine("Connected!")
            
            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
            client.Close()
         End While
      Catch e As SocketException
         Console.WriteLine("SocketException: {0}", e)
      Finally
         server.Stop()
      End Try
      
      Console.WriteLine(ControlChars.Cr + "Hit enter to continue....")
      Console.Read()
   End Sub

End Class

Veja TcpClient um exemplo de cliente.

Observações

A TcpListener classe fornece métodos simples que escutam e aceitam pedidos de ligação recebidos em modo síncrono de bloqueio. Pode usar a TcpClient ou a Socket para se ligar a um TcpListener. Crie um TcpListener usando um IPEndPoint, um endereço IP local e um número de porta, ou apenas um número de porta. Especifique Any para o endereço IP local e 0 para o número da porta local se quiser que o fornecedor de serviços subjacente lhe atribua esses valores. Se optar por fazer isto, pode usar a LocalEndpoint propriedade para identificar a informação atribuída, depois de a tomada se ter ligado.

Use o Start método para começar a ouvir pedidos de ligação recebidos. Start Vai enfileirar as ligações recebidas até que chames o Stop método ou até que ele tenha entrado MaxConnectionsna fila. Use um ou outro AcceptSocketAcceptTcpClient para puxar uma ligação da fila de pedidos de ligação recebida. Estes dois métodos vão bloquear. Se quiseres evitar bloqueios, podes usar primeiro o Pending método para determinar se há pedidos de ligação disponíveis na fila.

Chame o Stop método para fechar o TcpListener.

Note

O Stop método não fecha quaisquer ligações aceites. É responsável por encerrar estes documentos separadamente.

Construtores

Name Description
TcpListener(Int32)
Obsoleto.
Obsoleto.
Obsoleto.
Obsoleto.

Inicializa uma nova instância da TcpListener classe que escuta na porta especificada.

TcpListener(IPAddress, Int32)

Inicializa uma nova instância da TcpListener classe que escuta tentativas de ligação recebidas no endereço IP local especificado e no número de porta.

TcpListener(IPEndPoint)

Inicializa uma nova instância da TcpListener classe com o endpoint local especificado.

Propriedades

Name Description
Active

Obtém um valor que indica se TcpListener está a ouvir ativamente as ligações do cliente.

ExclusiveAddressUse

Recebe ou define um Boolean valor que especifica se permite TcpListener que apenas um socket subjacente ouça uma porta específica.

LocalEndpoint

Obtém o subjacente EndPoint da corrente TcpListener.

Server

Obtém a rede Socketsubjacente.

Métodos

Name Description
AcceptSocket()

Aceita um pedido de ligação pendente.

AcceptSocketAsync()

Aceita um pedido de ligação pendente como uma operação assíncrona.

AcceptSocketAsync(CancellationToken)

Aceita um pedido de ligação pendente como uma operação assíncrona cancelável.

AcceptTcpClient()

Aceita um pedido de ligação pendente.

AcceptTcpClientAsync()

Aceita um pedido de ligação pendente como uma operação assíncrona.

AcceptTcpClientAsync(CancellationToken)

Aceita um pedido de ligação pendente como uma operação assíncrona cancelável.

AllowNatTraversal(Boolean)

Permite ou desativa a travessia de Tradução de Endereços de Rede (NAT) numa TcpListener instância.

BeginAcceptSocket(AsyncCallback, Object)

Inicia uma operação assíncrona para aceitar uma tentativa de ligação recebida.

BeginAcceptTcpClient(AsyncCallback, Object)

Inicia uma operação assíncrona para aceitar uma tentativa de ligação recebida.

Create(Int32)

Cria uma nova TcpListener instância para ouvir na porta especificada.

Dispose()

Liberta todos os recursos usados pela instância atual TcpListener .

EndAcceptSocket(IAsyncResult)

Aceita assíncronamente uma tentativa de ligação recebida e cria uma nova Socket para gerir a comunicação remota do host.

EndAcceptTcpClient(IAsyncResult)

Aceita assíncronamente uma tentativa de ligação recebida e cria uma nova TcpClient para gerir a comunicação remota do host.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
Finalize()

Liberta recursos usados pela TcpListener turma.

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
Pending()

Determina se há pedidos de ligação pendentes.

Start()

Começa a ouvir pedidos de ligação recebidos.

Start(Int32)

Começa a ouvir pedidos de ligação recebidos com um número máximo de ligação pendente.

Stop()

Fecha o ouvinte.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Aplica-se a

Ver também