Socket.Connect Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Estabelece uma conexão com o host remoto.
Sobrecargas
Connect(EndPoint) |
Estabelece uma conexão com o host remoto. |
Connect(IPAddress, Int32) |
Estabelece uma conexão com o host remoto. O host é especificado por um endereço IP e um número da porta. |
Connect(IPAddress[], Int32) |
Estabelece uma conexão com o host remoto. O host é especificado por uma matriz de endereços IP e um número da porta. |
Connect(String, Int32) |
Estabelece uma conexão com o host remoto. O host é especificado por um nome do host e um número da porta. |
Connect(EndPoint)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Estabelece uma conexão com o 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 acessar o soquete.
O Socket foi fechado.
Um chamador mais alto na pilha de chamadas não tem permissão para a operação solicitada.
O Socket foi colocado em um estado de escuta chamando Listen(Int32).
Exemplos
O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexão.
client->Connect( anEndPoint );
if ( !client->Connected )
{
Console::WriteLine( "Winsock error: {0}", Convert::ToString(
System::Runtime::InteropServices::Marshal::GetLastWin32Error() ) );
}
// This is how you can determine whether a socket is still connected.
bool blockingState = client->Blocking;
try
{
array<Byte>^tmp = gcnew array<Byte>(1);
client->Blocking = false;
client->Send( tmp, 0, static_cast<SocketFlags>(0) );
Console::WriteLine( L"Connected!" );
}
catch ( SocketException^ e )
{
// 10035 == WSAEWOULDBLOCK
if ( e->NativeErrorCode.Equals( 10035 ) )
{
Console::WriteLine( "Connected from an exception!" );
}
else
{
Console::WriteLine( "Disconnected: {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.
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
Comentários
Se você estiver usando um protocolo orientado a conexão, como TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint e o ponto de extremidade remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de chamar Connect, você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método .
Se você estiver usando um protocolo sem conexão, como UDP, não precisará chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para se comunicar de forma síncrona com um host remoto. Se você chamar Connect, todos os datagramas que chegarem de um endereço diferente do padrão especificado serão descartados. Se você quiser definir o host remoto padrão como um endereço de difusão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou Connect gerará um SocketException. Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
O Connect método será bloqueado, a menos que você defina especificamente a Blocking propriedade como false
antes de chamar Connect. Se você estiver usando um protocolo orientado a conexão como TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por um orientado Socketa conexão, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando a Socket conexão foi concluída.
Observação
Se você estiver usando um protocolo orientado a conexão e não tiver chamado Bind antes de chamar Connect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, chame Connect novamente com o ponto de extremidade desejado.
Observação
Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Confira 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)
Aplica-se a
Connect(IPAddress, Int32)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Estabelece uma conexão com o host remoto. O host é especificado por um endereço IP e um número da 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 da porta do host remoto.
Exceções
address
é null
.
O número da porta é inválido.
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
Este método é válido para soquetes nas famílias InterNetwork ou InterNetworkV6.
O comprimento de address
é zero.
O Socket foi colocado em um estado de escuta chamando Listen(Int32).
Exemplos
O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexão.
// Synchronous connect using IPAddress to resolve the
// host name.
static void Connect1( String^ host, int port )
{
array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
Console::WriteLine( "Establishing Connection to {0}", host );
s->Connect( IPs[ 0 ], port );
Console::WriteLine( "Connection established" );
}
// 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");
}
Comentários
Se você estiver usando um protocolo orientado a conexão, como TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint e o ponto de extremidade remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de chamar Connect , você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método .
Se você estiver usando um protocolo sem conexão, como UDP, não precisará chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para se comunicar de forma síncrona com um host remoto. Se você chamar Connect qualquer datagrama que chegue de um endereço diferente do padrão especificado, será descartado. Se você quiser definir o host remoto padrão como um endereço de difusão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou Connect gerará um SocketException. Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Connect O método será bloqueado, a menos que você defina especificamente a Blocking propriedade como false
antes de chamar Connect. Se você estiver usando um protocolo orientado a conexão como TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por um orientado Socketa conexão, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando a Socket conexão foi concluída.
Observação
Se você estiver usando um protocolo orientado a conexão e não tiver chamado Bind antes de chamar Connect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, chame Connect novamente com o ponto de extremidade desejado.
Observação
Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Aplica-se a
Connect(IPAddress[], Int32)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Estabelece uma conexão com o host remoto. O host é especificado por uma matriz de endereços IP e um número da 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 da porta do host remoto.
Exceções
addresses
é null
.
O número da porta é inválido.
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
O soquete não está nas InterNetwork famílias ou InterNetworkV6 .
O comprimento de address
é zero.
O Socket foi colocado em um estado de escuta chamando Listen(Int32).
Exemplos
O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexão.
// Synchronous connect using Dns.ResolveToAddresses to
// resolve the host name.
static void Connect2( String^ host, int port )
{
array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
Console::WriteLine( "Establishing Connection to {0}", host );
s->Connect( IPs, port );
Console::WriteLine( "Connection established" );
}
// 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");
}
Comentários
Esse método normalmente é usado imediatamente após uma chamada para GetHostAddresses, que pode retornar vários endereços IP para um único host. Se você estiver usando um protocolo orientado à conexão, como TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint e o ponto de extremidade remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de chamar Connect , você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método .
Se você estiver usando um protocolo sem conexão, como UDP, não precisará chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para se comunicar de forma síncrona com um host remoto. Se você chamar Connect todos os datagrams que chegam de um endereço diferente do padrão especificado, será descartado. Se você quiser definir o host remoto padrão como um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou Connect gerará um SocketException. Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
Connect o método será bloqueado, a menos que você defina especificamente a Blocking propriedade como false
antes de chamar Connect. Se você estiver usando um protocolo orientado a conexões como TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por um orientado Socketà conexão, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando o terminou de Socket se conectar.
Observação
Se você estiver usando um protocolo orientado à conexão e não tiver chamado Bind antes de chamar Connect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, chame Connect novamente com o ponto de extremidade desejado.
Observação
Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.
Aplica-se a
Connect(String, Int32)
- Origem:
- Socket.cs
- Origem:
- Socket.cs
- Origem:
- Socket.cs
Estabelece uma conexão com o host remoto. O host é especificado por um nome do host e um número da 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 host remoto.
- port
- Int32
O número da porta do host remoto.
Exceções
host
é null
.
O número da porta é inválido.
Ocorreu um erro ao tentar acessar o soquete.
O Socket foi fechado.
O soquete não está nas InterNetwork famílias ou InterNetworkV6 .
O Socket foi colocado em um estado de escuta chamando Listen(Int32).
Exemplos
O exemplo de código a seguir se conecta a um ponto de extremidade remoto e verifica a conexão.
// Synchronous connect using host name (resolved by the
// Connect call.)
static void Connect3( String^ host, int port )
{
Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
Console::WriteLine( "Establishing Connection to {0}", host );
s->Connect( host, port );
Console::WriteLine( "Connection established" );
}
// 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");
}
Comentários
Se você estiver usando um protocolo orientado para conexão, como TCP, o Connect método estabelecerá de forma síncrona uma conexão de rede entre LocalEndPoint e o host remoto especificado. Se você estiver usando um protocolo sem conexão, Connect estabelecerá um host remoto padrão. Depois de chamar Connect , você pode enviar dados para o dispositivo remoto com o Send método ou receber dados do dispositivo remoto com o Receive método .
Se você estiver usando um protocolo sem conexão, como UDP, não precisará chamar Connect antes de enviar e receber dados. Você pode usar SendTo e ReceiveFrom para se comunicar de forma síncrona com um host remoto. Se você chamar Connect todos os datagrams que chegam de um endereço diferente do padrão especificado, será descartado. Se você quiser definir o host remoto padrão como um endereço de transmissão, primeiro chame o SetSocketOption método e defina a opção de soquete como SocketOptionName.Broadcastou Connect gerará um SocketException. Se você receber um SocketException, use a SocketException.ErrorCode propriedade para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro.
O Connect método será bloqueado, a menos que você defina especificamente a Blocking propriedade como false
antes de chamar Connect. Se você estiver usando um protocolo orientado para conexão como TCP e desabilitar o bloqueio, Connect gerará um SocketException porque ele precisa de tempo para fazer a conexão. Os protocolos sem conexão não gerarão uma exceção porque eles simplesmente estabelecem um host remoto padrão. Você pode usar SocketException.ErrorCode para obter o código de erro específico. Depois de obter esse código, consulte a documentação do código de erro da API do Windows Sockets versão 2 para obter uma descrição detalhada do erro. Se o erro retornou WSAEWOULDBLOCK, a conexão de host remoto foi iniciada por um orientado Socketà conexão, mas ainda não foi concluída com êxito. Use o Poll método para determinar quando o terminou de Socket se conectar.
Se iPv6 estiver habilitado e o Connect(String, Int32) método for chamado para se conectar a um host que resolva para endereços IPv6 e IPv4, a conexão com o endereço IPv6 será tentada primeiro antes do endereço IPv4. Isso pode ter o efeito de atrasar o tempo para estabelecer a conexão se o host não estiver escutando no endereço IPv6.
Observação
Se você estiver usando um protocolo orientado à conexão e não tiver chamado Bind antes de chamar Connect, o provedor de serviços subjacente atribuirá o endereço de rede local e o número da porta. Se você estiver usando um protocolo sem conexão, o provedor de serviços não atribuirá um endereço de rede local e um número de porta até que você conclua uma operação de envio ou recebimento. Se você quiser alterar o host remoto padrão, chame Connect novamente com o ponto de extremidade desejado.
Observação
Se o soquete tiver sido desconectado anteriormente, você não poderá usar esse método para restaurar a conexão. Use um dos métodos assíncronos BeginConnect para se reconectar. Essa é uma limitação do provedor subjacente.
Observação
Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo. Para obter mais informações, consulte Rastreamento de rede em .NET Framework.