TcpListener Classe

Definizione

Vengono attese le connessioni dai client di rete TCP.

public ref class TcpListener
public ref class TcpListener : IDisposable
public class TcpListener
public class TcpListener : IDisposable
type TcpListener = class
type TcpListener = class
    interface IDisposable
Public Class TcpListener
Public Class TcpListener
Implements IDisposable
Ereditarietà
TcpListener
Implementazioni

Esempio

Nell'esempio di codice seguente viene creato un TcpListeneroggetto .

#using <System.dll>

using namespace System;
using namespace System::IO;
using namespace System::Net;
using namespace System::Net::Sockets;
using namespace System::Text;
using namespace System::Threading;
void main()
{
   try
   {
      
      // Set the TcpListener on port 13000.
      Int32 port = 13000;
      IPAddress^ localAddr = IPAddress::Parse( "127.0.0.1" );
      
      // TcpListener* server = new TcpListener(port);
      TcpListener^ server = gcnew TcpListener( localAddr,port );
      
      // Start listening for client requests.
      server->Start();
      
      // Buffer for reading data
      array<Byte>^bytes = gcnew array<Byte>(256);
      String^ data = nullptr;
      
      // 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.
         TcpClient^ client = server->AcceptTcpClient();
         Console::WriteLine( "Connected!" );
         data = nullptr;
         
         // Get a stream Object* for reading and writing
         NetworkStream^ stream = client->GetStream();
         Int32 i;
         
         // Loop to receive all the data sent by the client.
         while ( i = stream->Read( bytes, 0, bytes->Length ) )
         {
            
            // Translate data bytes to a ASCII String*.
            data = Text::Encoding::ASCII->GetString( bytes, 0, i );
            Console::WriteLine( "Received: {0}", data );
            
            // Process the data sent by the client.
            data = data->ToUpper();
            array<Byte>^msg = Text::Encoding::ASCII->GetBytes( data );
            
            // Send back a response.
            stream->Write( msg, 0, msg->Length );
            Console::WriteLine( "Sent: {0}", data );
         }
         
         // Shutdown and end connection
         client->Close();
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "SocketException: {0}", e );
   }

   Console::WriteLine( "\nHit enter to continue..." );
   Console::Read();
}
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

Vedere TcpClient per un esempio client.

Commenti

La TcpListener classe fornisce metodi semplici in ascolto e accettare richieste di connessione in ingresso nel blocco della modalità sincrona. È possibile usare un oggetto TcpClient o per Socket connettersi a un TcpListeneroggetto . Creare un TcpListener oggetto usando un IPEndPointindirizzo IP locale e un numero di porta o semplicemente un numero di porta. Specificare Any per l'indirizzo IP locale e 0 per il numero di porta locale se si vuole che il provider di servizi sottostanti assegnare tali valori. Se si sceglie di eseguire questa operazione, è possibile usare la LocalEndpoint proprietà per identificare le informazioni assegnate, dopo la connessione del socket.

Usare il Start metodo per iniziare ad ascoltare le richieste di connessione in ingresso. Start accoderà le connessioni in ingresso finché non si chiama il Stop metodo o ha accodato MaxConnections. AcceptSocket Usare o AcceptTcpClient per eseguire il pull di una connessione dalla coda della richiesta di connessione in ingresso. Questi due metodi bloccano. Se si vuole evitare il blocco, è possibile usare prima il Pending metodo per determinare se le richieste di connessione sono disponibili nella coda.

Chiamare il Stop metodo per chiudere .TcpListener

Nota

Il Stop metodo non chiude alcuna connessione accettata. È responsabile della chiusura di queste operazioni separatamente.

Costruttori

TcpListener(Int32)
Obsoleti.
Obsoleti.
Obsoleti.
Obsoleti.

Inizializza una nuova istanza della classe TcpListener che è in attesa sulla porta specificata.

TcpListener(IPAddress, Int32)

Inizializza una nuova istanza della classe TcpListener in attesa dei tentativi di connessione in ingrasso sull'indirizzo IP e sul numero di porta specificati.

TcpListener(IPEndPoint)

Inizializza una nuova istanza della classe TcpListener con l'endpoint locale specificato.

Proprietà

Active

Ottiene un valore che indica se TcpListener è attivamente in attesa di connessioni client.

ExclusiveAddressUse

Ottiene o imposta un valore Boolean che specifica se il TcpListener consente a un unico socket sottostante di restare in attesa di una porta specifica.

LocalEndpoint

Ottiene il EndPoint sottostante del TcpListener corrente.

Server

Ottiene il Socket di rete sottostante.

Metodi

AcceptSocket()

Accetta una richiesta di connessione in sospeso.

AcceptSocketAsync()

Accetta una richiesta di connessione in sospeso come operazione asincrona.

AcceptSocketAsync(CancellationToken)

Accetta una richiesta di connessione in sospeso come operazione asincrona annullabile.

AcceptTcpClient()

Accetta una richiesta di connessione in sospeso.

AcceptTcpClientAsync()

Accetta una richiesta di connessione in sospeso come operazione asincrona.

AcceptTcpClientAsync(CancellationToken)

Accetta una richiesta di connessione in sospeso come operazione asincrona annullabile.

AllowNatTraversal(Boolean)

Abilita o disabilita l'attraversamento NAT (Network Address Translation) in un'istanza di TcpListener.

BeginAcceptSocket(AsyncCallback, Object)

Avvia un'operazione asincrona per accettare un tentativo di connessione in ingresso.

BeginAcceptTcpClient(AsyncCallback, Object)

Avvia un'operazione asincrona per accettare un tentativo di connessione in ingresso.

Create(Int32)

Crea una nuova istanza di TcpListener in ascolto sulla porta specificata.

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente di TcpListener.

EndAcceptSocket(IAsyncResult)

Accetta in modo asincrono una connessione in ingresso e crea un nuovo oggetto Socket per gestire la comunicazione con l'host remoto.

EndAcceptTcpClient(IAsyncResult)

Accetta in modo asincrono una connessione in ingresso e crea un nuovo oggetto TcpClient per gestire la comunicazione con l'host remoto.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
Finalize()

Rilascia le risorse usate dalla classe TcpListener.

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
Pending()

Determina se sono presenti richieste di connessione in sospeso.

Start()

Avvia l'attesa delle richieste di connessione in ingresso.

Start(Int32)

Avvia l'attesa delle richieste di connessione in ingresso specificando un numero massimo di possibili connessioni in sospeso.

Stop()

Chiude il listener.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Si applica a

Vedi anche