TcpClient Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece ligações aos clientes para serviços de rede TCP.
public ref class TcpClient : IDisposable
public class TcpClient : IDisposable
type TcpClient = class
interface IDisposable
Public Class TcpClient
Implements IDisposable
- Herança
-
TcpClient
- Implementações
Exemplos
O seguinte exemplo de código estabelece uma TcpClient ligação.
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
Observações
A TcpClient classe fornece métodos simples para ligar, enviar e receber dados de fluxo através de uma rede em modo de bloqueio síncrono.
Para TcpClient poder ligar e trocar dados, um TcpListener ou Socket criado com o TCP ProtocolType deve estar a ouvir pedidos de ligação recebidos. Pode ligar-se a este ouvinte de uma das seguintes duas formas:
Crie um
TcpCliente chame um dos três métodos disponíveis Connect .Crie um
TcpClientusando o nome do host e o número de porta do host remoto. Este construtor tentará automaticamente uma ligação.
Note
Se quiseres enviar datagramas sem ligação em modo de bloqueio síncrono, usa a UdpClient classe.
Notas para Herdeiros
Para enviar e receber dados, use o GetStream() método para obter um NetworkStream. Chame os Write(Byte[], Int32, Int32) métodos e Read(Byte[], Int32, Int32) do NetworkStream para enviar e receber dados com o host remoto. Use o Close(Int32) método para libertar todos os recursos associados ao TcpClient.
Construtores
| Name | Description |
|---|---|
| TcpClient() |
Inicializa uma nova instância da TcpClient classe. |
| TcpClient(AddressFamily) |
Inicializa uma nova instância da TcpClient classe com a família especificada. |
| TcpClient(IPEndPoint) |
Inicializa uma nova instância da TcpClient classe e liga-a ao endpoint local especificado. |
| TcpClient(String, Int32) |
Inicializa uma nova instância da TcpClient classe e liga-se à porta especificada no host especificado. |
Propriedades
| Name | Description |
|---|---|
| Active |
Recebe ou define um valor que indica se foi feita uma ligação. |
| Available |
Obtém a quantidade de dados recebida da rede e que está disponível para leitura. |
| Client |
Obtém ou define o subjacente Socket. |
| Connected |
Recebe um valor que indica se o subjacente Socket para a TcpClient está ligado a um host remoto. |
| ExclusiveAddressUse |
Obtém ou define um Boolean valor que especifica se permite TcpClient que apenas um cliente use uma porta. |
| LingerState |
Obtém ou define informação sobre o estado residual do socket associado. |
| NoDelay |
Recebe ou define um valor que desativa um atraso quando os buffers de envio ou receção não estão cheios. |
| ReceiveBufferSize |
Obtém ou define o tamanho do buffer de receção. |
| ReceiveTimeout |
Obtém ou define o tempo que um TcpClient irá esperar para receber dados assim que uma operação de leitura é iniciada. |
| SendBufferSize |
Obtém ou define o tamanho do buffer de envio. |
| SendTimeout |
Obtém ou definem o tempo TcpClient de espera para que uma operação de envio seja concluída com sucesso. |
Métodos
| Name | Description |
|---|---|
| BeginConnect(IPAddress, Int32, AsyncCallback, Object) |
Inicia um pedido assíncrono para uma ligação remota ao host. O host remoto é especificado por um IPAddress e um número de porta (Int32). |
| BeginConnect(IPAddress[], Int32, AsyncCallback, Object) |
Inicia um pedido assíncrono para uma ligação remota ao host. O host remoto é especificado por um IPAddress array e um número de porta (Int32). |
| BeginConnect(String, Int32, AsyncCallback, Object) |
Inicia um pedido assíncrono para uma ligação remota ao host. O host remoto é especificado por um nome de host (String) e um número de porta (Int32). |
| Close() |
Elimina esta TcpClient instância e solicita que a ligação TCP subjacente seja encerrada. |
| Connect(IPAddress, Int32) |
Liga o cliente a um host TCP remoto usando o endereço IP e o número de porta especificados. |
| Connect(IPAddress[], Int32) |
Liga o cliente a um host TCP remoto usando os endereços IP e o número de porta especificados. |
| Connect(IPEndPoint) |
Liga o cliente a um host TCP remoto usando o endpoint da rede remota especificado. |
| Connect(String, Int32) |
Liga o cliente à porta especificada no host especificado. |
| ConnectAsync(IPAddress, Int32) |
Liga o cliente a um host TCP remoto usando o endereço IP e número de porta especificados como uma operação assíncrona. |
| ConnectAsync(IPAddress[], Int32) |
Liga o cliente a um host TCP remoto usando os endereços IP e o número de porta especificados como uma operação assíncrona. |
| ConnectAsync(String, Int32) |
Liga o cliente à porta TCP especificada no host especificado como uma operação assíncrona. |
| Dispose() |
Liberta os recursos geridos e não geridos usados pelo TcpClient. |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo TcpClient e opcionalmente liberta os recursos geridos. |
| EndConnect(IAsyncResult) |
Termina uma tentativa pendente de ligação assíncrona. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| Finalize() |
Liberta recursos usados pela TcpClient turma. |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetStream() |
Devolve o NetworkStream usado para enviar e receber dados. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IDisposable.Dispose() |
Esta API suporta a infraestrutura de produtos e não é pressuposta para ser utilizada diretamente a partir do seu código. Liberta todos os recursos utilizados pelo TcpClient. |