TcpListener Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Прослушивает подключения из сетевых клиентов 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
- Наследование
-
TcpListener
- Реализации
Примеры
В следующем примере кода создается 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
См TcpClient . пример клиента.
Комментарии
Класс TcpListener предоставляет простые методы, которые прослушивают и принимают входящие запросы подключения в блокирующей синхронном режиме. Вы можете использовать либо a TcpClient , либо Socket для подключения с помощью TcpListener. TcpListener Создайте с помощью локального IPEndPointIP-адреса и номера порта или просто номер порта. Укажите 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 экземпляр для прослушивания указанного порта. |
| 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) |