Socket.Connect Método
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.
Estabelece uma ligação a um host remoto.
Sobrecargas
| Name | Description |
|---|---|
| Connect(String, Int32) |
Estabelece uma ligação a um host remoto. O host é especificado por um nome de host e um número de porta. |
| Connect(IPAddress[], Int32) |
Estabelece uma ligação a um host remoto. O host é especificado por um array de endereços IP e um número de porta. |
| Connect(IPAddress, Int32) |
Estabelece uma ligação a um host remoto. O host é especificado por um endereço IP e um número de porta. |
| Connect(EndPoint) |
Estabelece uma ligação a um host remoto. |
Connect(String, Int32)
Estabelece uma ligação a um host remoto. O host é especificado por um nome de host e um número de porta.
public:
void Connect(System::String ^ host, int port);
public void Connect(string host, int port);
member this.Connect : string * int -> unit
Public Sub Connect (host As String, port As Integer)
Parâmetros
- host
- String
O nome do anfitrião remoto.
- port
- Int32
O número de porta do host remoto.
Exceções
host é null.
O número de porta não é válido.
Ocorreu um erro ao tentar aceder ao soquete.
O Socket local foi encerrado.
O soquete não pertence às InterNetwork famílias de ou.InterNetworkV6
O Socket foi colocado em estado de escuta ao chamar Listen(Int32).
Exemplos
O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.
// Synchronous connect using host name (resolved by the
// Connect call.)
public static void Connect3(string host, int port)
{
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
Console.WriteLine("Establishing Connection to {0}",
host);
s.Connect(host, port);
Console.WriteLine("Connection established");
}
Observações
Se estiver a usar um protocolo orientado à ligação como o TCP, o Connect método estabelece sincronizadamente uma ligação de rede entre LocalEndPoint e o host remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect , pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.
Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se chamar Connect , qualquer datagrama que venha de um endereço diferente do padrão especificado será descartado. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.
O Connect método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar um a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.
Se o IPv6 estiver ativado e o Connect(String, Int32) método for chamado para se ligar a um host que resolve para os endereços IPv6 e IPv4, a ligação ao endereço IPv6 será tentada primeiro antes do endereço IPv4. Isto pode ter o efeito de atrasar o tempo para estabelecer a ligação se o anfitrião não estiver a ouvir no endereço IPv6.
Note
Se estiver a usar um protocolo orientado a ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente irá atribuir o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.
Note
Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.
Note
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.
Aplica-se a
Connect(IPAddress[], Int32)
Estabelece uma ligação a um host remoto. O host é especificado por um array de endereços IP e um número de porta.
public:
void Connect(cli::array <System::Net::IPAddress ^> ^ addresses, int port);
public void Connect(System.Net.IPAddress[] addresses, int port);
member this.Connect : System.Net.IPAddress[] * int -> unit
Public Sub Connect (addresses As IPAddress(), port As Integer)
Parâmetros
- addresses
- IPAddress[]
Os endereços IP do host remoto.
- port
- Int32
O número de porta do host remoto.
Exceções
addresses é null.
O número de porta não é válido.
Ocorreu um erro ao tentar aceder ao soquete.
O Socket local foi encerrado.
O soquete não pertence às InterNetwork famílias de ou.InterNetworkV6
O comprimento de addresses é zero.
O Socket foi colocado em estado de escuta ao chamar Listen(Int32).
Exemplos
O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.
// Synchronous connect using Dns.GetHostAddresses to
// resolve the host name.
public static void Connect2(string host, int port)
{
IPAddress[] IPs = Dns.GetHostAddresses(host);
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
Console.WriteLine("Establishing Connection to {0}",
host);
s.Connect(IPs, port);
Console.WriteLine("Connection established");
}
Observações
Este método é normalmente usado imediatamente após uma chamada para GetHostAddresses, que pode devolver múltiplos endereços IP para um único host. Se estiver a usar um protocolo orientado à ligação, como o TCP, o Connect método estabelece de forma síncrona uma ligação de rede entre LocalEndPoint e o endpoint remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect , pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.
Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se chamar Connect , qualquer datagrama que venha de um endereço diferente do padrão especificado será descartado. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.
Connect o método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.
Note
Se estiver a usar um protocolo orientado à ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente atribuirá o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.
Note
Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.
Note
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.
Aplica-se a
Connect(IPAddress, Int32)
Estabelece uma ligação a um host remoto. O host é especificado por um endereço IP e um número de porta.
public:
void Connect(System::Net::IPAddress ^ address, int port);
public void Connect(System.Net.IPAddress address, int port);
member this.Connect : System.Net.IPAddress * int -> unit
Public Sub Connect (address As IPAddress, port As Integer)
Parâmetros
- address
- IPAddress
O endereço IP do host remoto.
- port
- Int32
O número de porta do host remoto.
Exceções
address é null.
O número de porta não é válido.
Ocorreu um erro ao tentar aceder ao soquete.
O Socket local foi encerrado.
Este método é válido para soquetes nas InterNetwork famílias de ou.InterNetworkV6
O comprimento de address é zero.
O Socket foi colocado em estado de escuta ao chamar Listen(Int32).
Exemplos
O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.
// Synchronous connect using IPAddress to resolve the
// host name.
public static void Connect1(string host, int port)
{
IPAddress[] IPs = Dns.GetHostAddresses(host);
Socket s = new Socket(AddressFamily.InterNetwork,
SocketType.Stream,
ProtocolType.Tcp);
Console.WriteLine("Establishing Connection to {0}",
host);
s.Connect(IPs[0], port);
Console.WriteLine("Connection established");
}
Observações
Se estiver a usar um protocolo orientado à ligação, como o TCP, o Connect método estabelece de forma síncrona uma ligação de rede entre LocalEndPoint e o endpoint remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect , pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.
Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se chamar Connect , qualquer datagrama que venha de um endereço diferente do padrão especificado será descartado. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.
Connect o método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.
Note
Se estiver a usar um protocolo orientado à ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente atribuirá o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.
Note
Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.
Note
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.
Aplica-se a
Connect(EndPoint)
Estabelece uma ligação a um host remoto.
public:
void Connect(System::Net::EndPoint ^ remoteEP);
public void Connect(System.Net.EndPoint remoteEP);
member this.Connect : System.Net.EndPoint -> unit
Public Sub Connect (remoteEP As EndPoint)
Parâmetros
Exceções
remoteEP é null.
Ocorreu um erro ao tentar aceder ao soquete.
O Socket local foi encerrado.
Um chamador mais acima na pilha de chamadas não tem permissão para a operação solicitada.
O Socket foi colocado em estado de escuta ao chamar Listen(Int32).
Exemplos
O exemplo de código seguinte liga-se a um endpoint remoto e depois verifica a ligação.
// .Connect throws an exception if unsuccessful
client.Connect(anEndPoint);
// This is how you can determine whether a socket is still connected.
bool blockingState = client.Blocking;
try
{
byte [] tmp = new byte[1];
client.Blocking = false;
client.Send(tmp, 0, 0);
Console.WriteLine("Connected!");
}
catch (SocketException e)
{
// 10035 == WSAEWOULDBLOCK
if (e.NativeErrorCode.Equals(10035))
{
Console.WriteLine("Still Connected, but the Send would block");
}
else
{
Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode);
}
}
finally
{
client.Blocking = blockingState;
}
Console.WriteLine("Connected: {0}", client.Connected);
' .Connect throws an exception if unsuccessful
client.Connect(anEndPoint)
' This is how you can determine whether a socket is still connected.
Dim blockingState As Boolean = client.Blocking
Try
Dim tmp(0) As Byte
client.Blocking = False
client.Send(tmp, 0, 0)
Console.WriteLine("Connected!")
Catch e As SocketException
' 10035 == WSAEWOULDBLOCK
If e.NativeErrorCode.Equals(10035) Then
Console.WriteLine("Still Connected, but the Send would block")
Else
Console.WriteLine("Disconnected: error code {0}!", e.NativeErrorCode)
End If
Finally
client.Blocking = blockingState
End Try
Console.WriteLine("Connected: {0}", client.Connected)
End Sub
Observações
Se estiver a usar um protocolo orientado à ligação, como o TCP, o Connect método estabelece de forma síncrona uma ligação de rede entre LocalEndPoint e o endpoint remoto especificado. Se estiveres a usar um protocolo sem conexão, Connect estabelece um host remoto predefinido. Depois de ligar Connect, pode enviar dados para o dispositivo remoto com o Send método, ou receber dados do dispositivo remoto com o Receive método.
Se estiver a usar um protocolo sem ligação como o UDP, não precisa de ligar Connect antes de enviar e receber dados. Pode usar SendTo e ReceiveFrom comunicar de forma síncrona com um host remoto. Se ligar, Connectquaisquer datagramas que cheguem de um endereço diferente do padrão especificado serão descartados. Se quiser definir o seu host remoto predefinido para um endereço de broadcast, deve primeiro chamar o SetSocketOption método e definir a opção socket para SocketOptionName.Broadcast, ou Connect irá lançar um SocketException. Se receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro.
O Connect método irá bloquear, a menos que defina especificamente a Blocking propriedade para false antes de chamar Connect. Se estiveres a usar um protocolo orientado à ligação como o TCP e desativares o bloqueio, Connect vais lançar a SocketException porque precisa de tempo para fazer a ligação. Os protocolos sem ligação não lançam exceções porque simplesmente estabelecem um host remoto predefinido. Pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter este código, consulte a documentação do código de erro da API Windows versão 2 dos Sockets para uma descrição detalhada do erro. Se o erro devolver WSAEWOULBLOCK, a ligação remota do host foi iniciada por um orientado Socketà ligação , mas ainda não foi concluída com sucesso. Use o Poll método para determinar quando terminou Socket de ligar.
Note
Se estiver a usar um protocolo orientado à ligação e não ligou Bind antes de ligar Connect, o fornecedor de serviço subjacente atribuirá o endereço de rede local e o número da porta. Se estiver a usar um protocolo sem conexão, o fornecedor de serviços não atribuirá um endereço de rede local e um número de porta até concluir uma operação de envio ou receção. Se quiseres mudar o host remoto predefinido, liga Connect novamente com o endpoint desejado.
Note
Se a tomada já foi desligada anteriormente, então não pode usar este método para restaurar a ligação. Usa um dos métodos assíncronos BeginConnect para te reconectares. Esta é uma limitação do fornecedor subjacente.
Note
Esse membro gera informações de rastreamento quando você habilita o rastreamento de rede em seu aplicativo. Para mais informações, consulte Network Tracing in .NET Framework.
Ver também
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Receive(Byte[], Int32, SocketFlags)
- ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)
- LocalEndPoint
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- Blocking
- Poll(Int32, SelectMode)