TcpListener Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Прослушивает подключения от TCP-клиентов сети.
public ref class TcpListener
public class TcpListener
type TcpListener = class
Public Class TcpListener
- Наследование
-
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.
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);
}
// Shutdown and end connection
client.Close();
}
}
catch(SocketException e)
{
Console.WriteLine("SocketException: {0}", e);
}
finally
{
// Stop listening for new clients.
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 предоставляет простые методы, которые прослушивают и принимают входящие запросы на подключение в блокирующей синхронном режиме. You can use either a TcpClient or a Socket to connect with a TcpListener. TcpListener Создайте с помощью IPEndPoint, локальный IP-адрес и номер порта или просто номер порта. Укажите Any локальный IP-адрес и 0 для номера локального порта, если вы хотите, чтобы базовый поставщик услуг назначил эти значения. Если вы решили сделать это, вы можете использовать LocalEndpoint свойство для идентификации назначенных сведений после подключения сокета.
Start Используйте метод, чтобы начать прослушивание входящих запросов на подключение. Start будет помещать входящие подключения в очередь, пока не вызовете Stop метод или не в MaxConnectionsочереди. AcceptSocket Используйте или AcceptTcpClient извлеките подключение из очереди входящих запросов на подключение. Эти два метода блокируются. Если вы хотите избежать блокировки, сначала можно использовать 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, который должен прослушивать на определенном порту. |
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) |