Поделиться через


TcpListener Класс

Определение

Прослушивает подключения от 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
Наследование
TcpListener
Реализации

Примеры

В следующем примере кода создается TcpListener.

#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

См. TcpClient пример клиента.

Комментарии

Класс предоставляет простые TcpListener методы, которые прослушивают и принимают входящие запросы на подключение в блокирующем синхронном режиме. Для соединения с TcpListenerможно использовать TcpClient или Socket . TcpListener Create с помощью IPEndPoint, локальный IP-адрес и номер порта или просто номер порта. Укажите Any для локального IP-адреса и 0 для номера локального порта, если вы хотите, чтобы базовый поставщик услуг назначит эти значения. Если вы решите сделать это, вы можете использовать LocalEndpoint свойство для идентификации назначенных сведений после подключения сокета.

Используйте метод , Start чтобы начать прослушивание входящих запросов на подключение. Start будет помещать входящие подключения в очередь до тех пор, пока вы не вызовете Stop метод или он не будет помещен в MaxConnectionsочередь . Используйте или AcceptSocketAcceptTcpClient , чтобы извлечь подключение из очереди входящих запросов на подключение. Эти два метода блокируются. Если вы хотите избежать блокировки, сначала можно использовать Pending метод , чтобы определить, доступны ли запросы на подключение в очереди.

Stop Вызовите метод , чтобы закрыть TcpListener.

Примечание

Метод Stop не закрывает принятые подключения. Вы несете ответственность за их закрытие по отдельности.

Конструкторы

TcpListener(Int32)
Устаревшие..
Устаревшие..
Устаревшие..
Устаревшие..

Инициализирует новый экземпляр класса TcpListener, который ожидает передачу данных для указанного порта.

TcpListener(IPAddress, Int32)

Инициализирует новый экземпляр класса TcpListener, который выполняет ожидание входящих попыток подключения для заданных локального IP-адреса и номера локального порта.

TcpListener(IPEndPoint)

Инициализирует новый экземпляр класса TcpListener с заданной локальной конечной точкой.

Свойства

Active

Получает значение, указывающее, является ли активным объект TcpListener, выполняющий прослушивание клиентских подключений.

ExclusiveAddressUse

Возвращает или задает значение Boolean, указывающее, позволяет ли объект TcpListener осуществлять ожидание передачи данных только на одном основном сокете на указанном порту.

LocalEndpoint

Получает основной объект EndPoint для текущего объекта TcpListener.

Server

Получает основной сетевой объект Socket.

Методы

AcceptSocket()

Принимает ожидающий запрос на подключение.

AcceptSocketAsync()

Принимает запрос ожидающего подключения как асинхронную операцию.

AcceptSocketAsync(CancellationToken)

Принимает ожидающий запрос на подключение в качестве отменяемой асинхронной операции.

AcceptTcpClient()

Принимает ожидающий запрос на подключение.

AcceptTcpClientAsync()

Принимает запрос ожидающего подключения как асинхронную операцию.

AcceptTcpClientAsync(CancellationToken)

Принимает ожидающий запрос на подключение в качестве отменяемой асинхронной операции.

AllowNatTraversal(Boolean)

Включает или отключает обход механизма преобразования сетевых адресов (NAT) для экземпляра TcpListener.

BeginAcceptSocket(AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения.

BeginAcceptTcpClient(AsyncCallback, Object)

Начинает асинхронную операцию, чтобы принять попытку входящего подключения.

Create(Int32)

Создает Новый экземпляр TcpListener, который должен прослушивать на определенном порту.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса TcpListener.

EndAcceptSocket(IAsyncResult)

Асинхронно принимает входящие попытки подключения и создает новый объект Socket для связи с удаленным узлом.

EndAcceptTcpClient(IAsyncResult)

Асинхронно принимает входящие попытки подключения и создает новый объект TcpClient для связи с удаленным узлом.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Finalize()

Освобождает ресурсы, используемые классом TcpListener.

GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.

(Унаследовано от Object)
Pending()

Определяет, имеются ли ожидающие запросы на подключение.

Start()

Запускает ожидание входящих запросов на подключение.

Start(Int32)

Запускает ожидание входящих запросов на подключение с максимальным числом ожидающих подключений.

Stop()

Закрывает слушатель.

ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Применяется к

См. также раздел