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 )
{
   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;
      TcpClient^ 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.
      //  Stream stream = client->GetStream();

      NetworkStream^ stream = client->GetStream();
      
      // Send the message to the connected TcpServer. 
      stream->Write( data, 0, data->Length );

      Console::WriteLine( "Sent: {0}", message );
      
      // Receive the TcpServer::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 );
      
      // Close everything.
      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();
}
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;
    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.
   //  Stream stream = client.GetStream();

    NetworkStream stream = client.GetStream();

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

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

    // Receive the TcpServer.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);

    // Close everything.
    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
      Dim 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.
      '  Stream stream = client.GetStream();
      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 TcpServer.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)
      
      ' Close everything.
      stream.Close()
      client.Close()
   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 подключения и обмена данными, TcpListener или, Socket созданный с помощью протокола TCP, ProtocolType необходимо прослушивать входящие запросы на подключение. Подключиться к этому прослушивателю можно одним из следующих двух способов:

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

  • Создайте 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.

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

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