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


TcpClient Класс

Определение

Предоставляет клиентские подключения для сетевых служб протокола TCP.

public ref class TcpClient : IDisposable
public class TcpClient : IDisposable
type TcpClient = class
    interface IDisposable
Public Class TcpClient
Implements IDisposable
Наследование
TcpClient
Реализации

Примеры

В следующем примере кода устанавливается TcpClient подключение.

void Connect( String^ server, String^ message )
{
   TcpClient^ client = nullptr;
   try
   {
      // Create a TcpClient.
      // Note, for this client to work you need to have a TcpServer 
      // connected to the same address as specified by the server, port
      // combination.
      Int32 port = 13000;
      client = gcnew TcpClient(server, port);
      
      // Translate the passed message into ASCII and store it as a Byte array.
      array<Byte>^data = Text::Encoding::ASCII->GetBytes( message );
      
      // Get a client stream for reading and writing.
      NetworkStream^ stream = client->GetStream();
      
      // Send the message to the connected TcpServer. 
      stream->Write( data, 0, data->Length );

      Console::WriteLine( "Sent: {0}", message );
      
      // Receive the server response.

      // Buffer to store the response bytes.
      data = gcnew array<Byte>(256);

      // String to store the response ASCII representation.
      String^ responseData = String::Empty;
      
      // Read the first batch of the TcpServer response bytes.
      Int32 bytes = stream->Read( data, 0, data->Length );
      responseData = Text::Encoding::ASCII->GetString( data, 0, bytes );
      Console::WriteLine( "Received: {0}", responseData );
      
      // Explicit close is not necessary since TcpClient::Dispose() will be
      // called automatically in finally block.
      // stream->Close();
      // client->Close();
   }
   catch ( ArgumentNullException^ e ) 
   {
      Console::WriteLine( "ArgumentNullException: {0}", e );
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "SocketException: {0}", e );
   }
   finally
   {
      if (client != nullptr)
         delete client;
   }

   Console::WriteLine( "\n Press Enter to continue..." );
   Console::Read();
}
static void Connect(String server, String message)
{
  try
  {
    // Create a TcpClient.
    // Note, for this client to work you need to have a TcpServer
    // connected to the same address as specified by the server, port
    // combination.
    Int32 port = 13000;

    // Prefer a using declaration to ensure the instance is Disposed later.
    using TcpClient client = new TcpClient(server, port);

    // Translate the passed message into ASCII and store it as a Byte array.
    Byte[] data = System.Text.Encoding.ASCII.GetBytes(message);

    // Get a client stream for reading and writing.
    NetworkStream stream = client.GetStream();

    // Send the message to the connected TcpServer.
    stream.Write(data, 0, data.Length);

    Console.WriteLine("Sent: {0}", message);

    // Receive the server response.

    // Buffer to store the response bytes.
    data = new Byte[256];

    // String to store the response ASCII representation.
    String responseData = String.Empty;

    // Read the first batch of the TcpServer response bytes.
    Int32 bytes = stream.Read(data, 0, data.Length);
    responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
    Console.WriteLine("Received: {0}", responseData);

    // Explicit close is not necessary since TcpClient.Dispose() will be
    // called automatically.
    // stream.Close();
    // client.Close();
  }
  catch (ArgumentNullException e)
  {
    Console.WriteLine("ArgumentNullException: {0}", e);
  }
  catch (SocketException e)
  {
    Console.WriteLine("SocketException: {0}", e);
  }

  Console.WriteLine("\n Press Enter to continue...");
  Console.Read();
}
Shared Sub Connect(server As [String], message As [String])
   Try
      ' Create a TcpClient.
      ' Note, for this client to work you need to have a TcpServer 
      ' connected to the same address as specified by the server, port
      ' combination.
      Dim port As Int32 = 13000

      ' Prefer using declaration to ensure the instance is Disposed later.
      Using client As New TcpClient(server, port)
      
         ' Translate the passed message into ASCII and store it as a Byte array.
         Dim data As [Byte]() = System.Text.Encoding.ASCII.GetBytes(message)
         
         ' Get a client stream for reading and writing.
         Dim stream As NetworkStream = client.GetStream()
         
         ' Send the message to the connected TcpServer. 
         stream.Write(data, 0, data.Length)
         
         Console.WriteLine("Sent: {0}", message)
         
         ' Receive the server response.
         ' Buffer to store the response bytes.
         data = New [Byte](256) {}
         
         ' String to store the response ASCII representation.
         Dim responseData As [String] = [String].Empty
         
         ' Read the first batch of the TcpServer response bytes.
         Dim bytes As Int32 = stream.Read(data, 0, data.Length)
         responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)
         Console.WriteLine("Received: {0}", responseData)
         
         ' Explicit close is not necessary since TcpClient.Dispose() will be
         ' called automatically.
         ' stream.Close()
         ' client.Close()
      End Using
   Catch e As ArgumentNullException
      Console.WriteLine("ArgumentNullException: {0}", e)
   Catch e As SocketException
      Console.WriteLine("SocketException: {0}", e)
   End Try
   
   Console.WriteLine(ControlChars.Cr + " Press Enter to continue...")
   Console.Read()
End Sub

Комментарии

Класс предоставляет простые TcpClient методы для подключения, отправки и получения потоковых данных по сети в синхронном режиме блокировки.

Чтобы TcpClient подключиться и обмениваться данными, объект или Socket , TcpListener созданный с помощью TCPProtocolType, должен прослушивать входящие запросы на подключение. Подключиться к этому прослушивателю можно одним из следующих двух способов:

  • TcpClient Create и вызовите один из трех доступных Connect методов.

  • Create , TcpClient используя имя узла и номер порта удаленного узла. Этот конструктор автоматически попытается установить подключение.

Примечание

Если вы хотите отправлять датаграммы без подключения в режиме синхронной блокировки, используйте UdpClient класс .

Примечания для тех, кто наследует этот метод

Для отправки GetStream() и получения данных используйте метод для получения NetworkStream. Write(Byte[], Int32, Int32) Вызовите методы и Read(Byte[], Int32, Int32) для отправки NetworkStream и получения данных с удаленным узлом. Используйте метод , Close(Int32) чтобы освободить все ресурсы, связанные с TcpClient.

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

TcpClient()

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

TcpClient(AddressFamily)

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

TcpClient(IPEndPoint)

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

TcpClient(String, Int32)

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

Свойства

Active

Получает или задает значение, указывающее, установлено ли подключение.

Available

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

Client

Возвращает или задает базовый объект Socket.

Connected

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

ExclusiveAddressUse

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

LingerState

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

NoDelay

Возвращает или задает значение, которое отключает задержку в том случае, когда буферы отправки и получения не заполнены.

ReceiveBufferSize

Возвращает или задает размер буфера приема.

ReceiveTimeout

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

SendBufferSize

Возвращает или задает размер буфера отправки.

SendTimeout

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

Методы

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Удаленный узел задается объектом IPAddress и номером порта (Int32).

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Удаленный узел задается массивом IPAddress и номером порта (Int32).

BeginConnect(String, Int32, AsyncCallback, Object)

Начинает выполнение асинхронного запроса для подключения к удаленному узлу. Удаленный узел задается именем узла (String) и номером порта (Int32).

Close()

Удаляет данный экземпляр TcpClient и запрашивает закрытие базового подключения TCP.

Connect(IPAddress, Int32)

Подключает клиента к удаленному TCP-узлу, используя указанный IP-адрес и номер порта.

Connect(IPAddress[], Int32)

Подключает клиента к удаленному TCP-узлу, используя указанный IP-адрес и номер порта.

Connect(IPEndPoint)

Подключает клиента к удаленному TCP-узлу, используя указанную удаленную сетевую конечную точку.

Connect(String, Int32)

Подключает клиента к указанному порту заданного узла.

ConnectAsync(IPAddress, Int32)

Подключает клиента к удаленному TCP-узлу, используя заданный IP-адрес и номер порта в асинхронной операции.

ConnectAsync(IPAddress, Int32, CancellationToken)

Подключает клиента к удаленному TCP-узлу, используя заданный IP-адрес и номер порта в асинхронной операции.

ConnectAsync(IPAddress[], Int32)

Подключает клиента к удаленному TCP-узлу, используя заданные IP-адреса и номер порта в асинхронной операции.

ConnectAsync(IPAddress[], Int32, CancellationToken)

Подключает клиента к удаленному TCP-узлу, используя заданные IP-адреса и номер порта в асинхронной операции.

ConnectAsync(IPEndPoint)

Подключает клиент к удаленному TCP-узлу, используя указанную конечную точку в качестве асинхронной операции.

ConnectAsync(IPEndPoint, CancellationToken)

Подключает клиент к удаленному TCP-узлу, используя указанную конечную точку в качестве асинхронной операции.

ConnectAsync(String, Int32)

Подключает клиента к указанному TCP-порту заданного узла в асинхронной операции.

ConnectAsync(String, Int32, CancellationToken)

Подключает клиента к указанному TCP-порту заданного узла в асинхронной операции.

Dispose()

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

Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые объектом TcpClient, а при необходимости освобождает также управляемые ресурсы.

EndConnect(IAsyncResult)

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

Equals(Object)

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

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

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

GetHashCode()

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

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

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

GetType()

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

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

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

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

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

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

Явные реализации интерфейса

IDisposable.Dispose()

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Освобождает все ресурсы, занятые модулем TcpClient.

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

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