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