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) |