Socket.BeginConnect Método

Definição

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection.

Sobrecargas

BeginConnect(EndPoint, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection.

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection. O host é especificado por um IPAddress e um número da porta.The host is specified by an IPAddress and a port number.

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection. O host é especificado por uma matriz IPAddress e um número da porta.The host is specified by an IPAddress array and a port number.

BeginConnect(String, Int32, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection. O host é especificado por um nome do host e um número da porta.The host is specified by a host name and a port number.

BeginConnect(EndPoint, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection.

public:
 IAsyncResult ^ BeginConnect(System::Net::EndPoint ^ remoteEP, AsyncCallback ^ callback, System::Object ^ state);
public:
 IAsyncResult ^ BeginConnect(System::Net::EndPoint ^ end_point, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginConnect (System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
public IAsyncResult BeginConnect (System.Net.EndPoint end_point, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
member this.BeginConnect : System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginConnect (end_point As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

Parâmetros

remoteEPend_point
EndPoint

Um EndPoint que representa o host remoto.An EndPoint that represents the remote host.

callback
AsyncCallback

O delegado AsyncCallback.The AsyncCallback delegate.

state
Object

Um objeto que contém informações de estado para essa solicitação.An object that contains state information for this request.

Retornos

IAsyncResult

Um IAsyncResult que faz referência à conexão assíncrona.An IAsyncResult that references the asynchronous connection.

Exceções

remoteEP é null.remoteEP is null.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Um chamador mais alto na pilha de chamadas não tem permissão para a operação solicitada.A caller higher in the call stack does not have permission for the requested operation.

O Socket foi colocado em um estado de escuta chamando Listen(Int32) ou uma operação assíncrona já está em andamento.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Exemplos

O exemplo de código a seguir inicia uma tentativa de conexão assíncrona.The following code example initiates an asynchronous connection attempt.

IPHostEntry^ lipa = Dns::Resolve( "host.contoso.com" );
IPEndPoint^ lep = gcnew IPEndPoint( lipa->AddressList[ 0 ], 11000 );

Socket^ s = gcnew Socket( lep->Address->AddressFamily,
   SocketType::Stream,
   ProtocolType::Tcp );
try
{
   while ( true )
   {
      allDone->Reset();

      Console::WriteLine( "Establishing Connection" );
      s->BeginConnect( lep, gcnew AsyncCallback(
         &Async_Send_Receive::Connect_Callback ), s );

      allDone->WaitOne();
   }
}
catch ( Exception^ e ) 
{
   Console::WriteLine( e );
}
IPHostEntry lipa = Dns.Resolve("host.contoso.com");
IPEndPoint lep = new IPEndPoint(lipa.AddressList[0], 11000);

   Socket s = new Socket(lep.Address.AddressFamily,
                               SocketType.Stream,
                                     ProtocolType.Tcp);
   try{

             while(true){
             allDone.Reset();

             Console.WriteLine("Establishing Connection");
             s.BeginConnect(lep, new AsyncCallback(Async_Send_Receive.Connect_Callback), s);

             allDone.WaitOne();
        }
   }
   catch (Exception e){
        Console.WriteLine(e.ToString());
   }
    Dim lipa As IPHostEntry = Dns.Resolve("host.contoso.com")
    Dim lep As New IPEndPoint(lipa.AddressList(0), 11000)
    
    Dim s As New Socket(lep.Address.AddressFamily, SocketType.Stream, ProtocolType.Tcp)
    Try
       
       While True
          allDone.Reset()
          
          Console.WriteLine("Establishing Connection")

          s.BeginConnect(lep, New AsyncCallback(AddressOf Async_Send_Receive.Connect_Callback), s)
          
          allDone.WaitOne()
       End While
    Catch e As Exception
       Console.WriteLine(e.ToString())
    End Try
 End Sub

Comentários

Se você estiver usando um protocolo orientado a conexão, o BeginConnect método iniciará uma solicitação assíncrona para uma conexão com o remoteEP parâmetro.If you are using a connection-oriented protocol, the BeginConnect method starts an asynchronous request for a connection to the remoteEP parameter. Se você estiver usando um protocolo sem conexão, BeginConnect o estabelecerá um host remoto padrão.If you are using a connectionless protocol, BeginConnect establishes a default remote host. Conectar ou definir o host remoto padrão de forma assíncrona fornece a capacidade de enviar e receber dados em um thread de execução separado.Connecting or setting the default remote host asynchronously gives you the ability to send and receive data within a separate execution thread.

Você pode criar um método de retorno de chamada que implemente o AsyncCallback delegado e passe seu nome para o BeginConnect método.You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginConnect method. No mínimo, você deve passar o Socket para BeginConnect por meio do state parâmetro.At the very minimum, you must pass the Socket to BeginConnect through the state parameter. Se o retorno de chamada precisar de mais informações, você poderá criar uma pequena classe para manter o Socket e as outras informações necessárias.If your callback needs more information, you can create a small class to hold the Socket, and the other required information. Passe uma instância dessa classe para o BeginConnect método por meio do state parâmetro.Pass an instance of this class to the BeginConnect method through the state parameter.

O método de retorno de chamada deve invocar o EndConnect método.Your callback method should invoke the EndConnect method. Quando seu aplicativo chama BeginConnect , o sistema usará um thread separado para executar o método de retorno de chamada especificado e será bloqueado EndConnect até que o Socket se conecte com êxito ou gere uma exceção.When your application calls BeginConnect, the system will use a separate thread to execute the specified callback method, and will block on EndConnect until the Socket connects successfully or throws an exception. Se você quiser que o thread original seja bloqueado depois de chamar o BeginConnect método, use WaitOne .If you want the original thread to block after you call the BeginConnect method, use WaitOne. Chame o método set em um ManualResetEvent no método de retorno de chamada quando desejar que o thread original continue em execução.Call the Set method on a ManualResetEvent in the callback method when you want the original thread to continue executing. Para obter informações adicionais sobre como escrever métodos de retorno de chamada , consulte Empacotando um delegado como um método de retorno de chamada.For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

Se você estiver usando um protocolo sem conexão, como o UDP, não precisará chamar BeginConnect antes de enviar e receber dados.If you are using a connectionless protocol such as UDP, you do not have to call BeginConnect before sending and receiving data. Você pode usar BeginSendTo BeginReceiveFrom o e o para se comunicar com um host remoto.You can use BeginSendTo and BeginReceiveFrom to communicate with a remote host. Se você chamar BeginConnect , todos os datagramas que chegam de um endereço diferente do padrão especificado serão descartados.If you do call BeginConnect, any datagrams that arrive from an address other than the specified default will be discarded. Se você quiser definir o host remoto padrão para um endereço de difusão, primeiro você deve chamar SetSocketOption e definir Broadcast para true .If you wish to set your default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. Se você não puder, o gerará BeginConnect um SocketException .If you cannot, BeginConnect will throw a SocketException.

Se você estiver usando um protocolo orientado a conexão e não chamar Bind antes BeginConnect de chamar, o provedor de serviços subjacente atribuirá o número da porta e o endereço de rede local mais apropriado.If you are using a connection-oriented protocol and do not call Bind before calling BeginConnect, the underlying service provider will assign the most appropriate local network address and port number. 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ê chame o BeginSend ReceiveFrom método ou.If you are using a connectionless protocol, the service provider will not assign a local network address and port number until you call the BeginSend or ReceiveFrom method. Se você quiser alterar o host remoto padrão, chame o BeginConnect método novamente com o ponto de extremidade desejado.If you want to change the default remote host, call the BeginConnect method again with the desired endpoint.

Para cancelar uma chamada pendente para o BeginConnect método, feche o Socket .To cancel a pending call to the BeginConnect method, close the Socket. Quando o Close método é chamado enquanto uma operação assíncrona está em andamento, o retorno de chamada fornecido ao BeginConnect método é chamado.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Uma chamada subsequente para o EndConnect método gerará um ObjectDisposedException para indicar que a operação foi cancelada.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

Se este Soquete tiver sido desconectado anteriormente, BeginConnect deverá ser chamado em um thread que não será encerrado até que a operação seja concluída.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Essa é uma limitação do provedor subjacente.This is a limitation of the underlying provider.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket .The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Após o primeiro uso de um contexto específico (um método assíncrono específico Socket , uma Socket instância específica e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria no desempenho.After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

Confira também

Aplica-se a

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection. O host é especificado por um IPAddress e um número da porta.The host is specified by an IPAddress and a port number.

public:
 IAsyncResult ^ BeginConnect(System::Net::IPAddress ^ address, int port, AsyncCallback ^ requestCallback, System::Object ^ state);
public:
 IAsyncResult ^ BeginConnect(System::Net::IPAddress ^ address, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress address, int port, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginConnect (System.Net.IPAddress address, int port, AsyncCallback requestCallback, object state);
public IAsyncResult BeginConnect (System.Net.IPAddress address, int port, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.IPAddress * int * AsyncCallback * obj -> IAsyncResult
member this.BeginConnect : System.Net.IPAddress * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (address As IPAddress, port As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginConnect (address As IPAddress, port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parâmetros

address
IPAddress

O IPAddress do host remoto.The IPAddress of the remote host.

port
Int32

O número da porta do host remoto.The port number of the remote host.

requestCallbackcallback
AsyncCallback

Um delegado AsyncCallback que faz referência ao método a ser invocado quando a operação de conexão for concluída.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object

Um objeto definido pelo usuário que contém informações sobre a operação de conexão.A user-defined object that contains information about the connect operation. Esse objeto é passado para o delegado requestCallback quando a operação é concluída.This object is passed to the requestCallback delegate when the operation is complete.

Retornos

IAsyncResult

Um IAsyncResult que faz referência à conexão assíncrona.An IAsyncResult that references the asynchronous connection.

Exceções

address é null.address is null.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

O Socket não está na família do soquete.The Socket is not in the socket family.

O número da porta é inválido.The port number is not valid.

O comprimento de address é zero.The length of address is zero.

O Socket foi colocado em um estado de escuta chamando Listen(Int32) ou uma operação assíncrona já está em andamento.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Exemplos

O exemplo de código a seguir inicia uma tentativa de conexão assíncrona.The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone =
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous
// connect call. the socket is passed via the objectState
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using the host name, resolved via 
// IPAddress
static void BeginConnect1( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( IPs[ 0 ], port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  
   // The callback sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}


// Asynchronous connect using the host name, resolved via
// IPAddress
public static void BeginConnect1(string host, int port)
{

    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.BeginConnect(IPs[0], port,
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.
    // The callback sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}		

Comentários

A operação assíncrona BeginConnect deve ser concluída chamando o EndConnect método.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Normalmente, o método é invocado pelo requestCallback delegado.Typically, the method is invoked by the requestCallback delegate.

Este método não é bloqueado até que a operação seja concluída.This method does not block until the operation is complete. Para bloquear até que a operação seja concluída, use uma das Connect sobrecargas de método ou EndConnect .To block until the operation is complete, use one of the Connect method overloads, or EndConnect.

Para cancelar uma chamada pendente para o BeginConnect método, feche o Socket .To cancel a pending call to the BeginConnect method, close the Socket. Quando o Close método é chamado enquanto uma operação assíncrona está em andamento, o retorno de chamada fornecido ao BeginConnect método é chamado.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Uma chamada subsequente para o EndConnect método gerará um ObjectDisposedException para indicar que a operação foi cancelada.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Para obter informações detalhadas sobre como usar o modelo de programação assíncrona, consulte chamando métodos síncronos de forma assíncronaFor detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

Se este Soquete tiver sido desconectado anteriormente, BeginConnect deverá ser chamado em um thread que não será encerrado até que a operação seja concluída.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Essa é uma limitação do provedor subjacente.This is a limitation of the underlying provider. Além disso, o EndPoint que é usado deve ser diferente.Also the EndPoint that is used must be different.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket .The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Após o primeiro uso de um contexto específico (um método assíncrono específico Socket , uma Socket instância específica e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria no desempenho.After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

Confira também

Aplica-se a

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection. O host é especificado por uma matriz IPAddress e um número da porta.The host is specified by an IPAddress array and a port number.

public:
 IAsyncResult ^ BeginConnect(cli::array <System::Net::IPAddress ^> ^ addresses, int port, AsyncCallback ^ requestCallback, System::Object ^ state);
public:
 IAsyncResult ^ BeginConnect(cli::array <System::Net::IPAddress ^> ^ addresses, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, AsyncCallback requestCallback, object state);
public IAsyncResult BeginConnect (System.Net.IPAddress[] addresses, int port, AsyncCallback callback, object state);
member this.BeginConnect : System.Net.IPAddress[] * int * AsyncCallback * obj -> IAsyncResult
member this.BeginConnect : System.Net.IPAddress[] * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (addresses As IPAddress(), port As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginConnect (addresses As IPAddress(), port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parâmetros

addresses
IPAddress[]

Pelo menos um IPAddress, designando o host remoto.At least one IPAddress, designating the remote host.

port
Int32

O número da porta do host remoto.The port number of the remote host.

requestCallbackcallback
AsyncCallback

Um delegado AsyncCallback que faz referência ao método a ser invocado quando a operação de conexão for concluída.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object

Um objeto definido pelo usuário que contém informações sobre a operação de conexão.A user-defined object that contains information about the connect operation. Esse objeto é passado para o delegado requestCallback quando a operação é concluída.This object is passed to the requestCallback delegate when the operation is complete.

Retornos

IAsyncResult

Um IAsyncResult que faz referência a conexões assíncronas.An IAsyncResult that references the asynchronous connections.

Exceções

addresses é null.addresses is null.

Ocorreu um erro ao tentar acessar o soquete.An error occurred when attempting to access the socket.

O Socket foi fechado.The Socket has been closed.

Este método é válido para soquetes que usam InterNetwork ou InterNetworkV6.This method is valid for sockets that use InterNetwork or InterNetworkV6.

O número da porta é inválido.The port number is not valid.

O comprimento de address é zero.The length of address is zero.

O Socket foi colocado em um estado de escuta chamando Listen(Int32) ou uma operação assíncrona já está em andamento.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Exemplos

O exemplo de código a seguir inicia uma tentativa de conexão assíncrona.The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone =
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous
// connect call. the socket is passed via the objectState
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect, using DNS.ResolveToAddresses
static void BeginConnect2( String^ host, int port )
{
   array<IPAddress^>^IPs = Dns::GetHostAddresses( host );
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( IPs, port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  The callback 
   // sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}



// Asynchronous connect, using DNS.GetHostAddresses
public static void BeginConnect2(string host, int port)
{
    IPAddress[] IPs = Dns.GetHostAddresses(host);

    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.BeginConnect(IPs, port,
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}		

Comentários

A operação assíncrona BeginConnect deve ser concluída chamando o EndConnect método.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Normalmente, o método é invocado pelo requestCallback delegado.Typically, the method is invoked by the requestCallback delegate.

Este método não é bloqueado até que a operação seja concluída.This method does not block until the operation is complete. Para bloquear até que a operação seja concluída, use uma das Connect sobrecargas de método.To block until the operation is complete, use one of the Connect method overloads.

Para cancelar uma chamada pendente para o BeginConnect método, feche o Socket .To cancel a pending call to the BeginConnect method, close the Socket. Quando o Close método é chamado enquanto uma operação assíncrona está em andamento, o retorno de chamada fornecido ao BeginConnect método é chamado.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Uma chamada subsequente para o EndConnect método gerará um ObjectDisposedException para indicar que a operação foi cancelada.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Para obter informações detalhadas sobre como usar o modelo de programação assíncrona, consulte chamando métodos síncronos de formaassíncrona.For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

Se este Soquete tiver sido desconectado anteriormente, BeginConnect deverá ser chamado em um thread que não será encerrado até que a operação seja concluída.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Essa é uma limitação do provedor subjacente.This is a limitation of the underlying provider. Além disso, o EndPoint que é usado deve ser diferente.Also the EndPoint that is used must be different.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket .The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Após o primeiro uso de um contexto específico (um método assíncrono específico Socket , uma Socket instância específica e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria no desempenho.After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

Confira também

Aplica-se a

BeginConnect(String, Int32, AsyncCallback, Object)

Inicia uma solicitação assíncrona para uma conexão de host remoto.Begins an asynchronous request for a remote host connection. O host é especificado por um nome do host e um número da porta.The host is specified by a host name and a port number.

public:
 IAsyncResult ^ BeginConnect(System::String ^ host, int port, AsyncCallback ^ requestCallback, System::Object ^ state);
public:
 IAsyncResult ^ BeginConnect(System::String ^ host, int port, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginConnect (string host, int port, AsyncCallback? requestCallback, object? state);
public IAsyncResult BeginConnect (string host, int port, AsyncCallback requestCallback, object state);
public IAsyncResult BeginConnect (string host, int port, AsyncCallback callback, object state);
member this.BeginConnect : string * int * AsyncCallback * obj -> IAsyncResult
member this.BeginConnect : string * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (host As String, port As Integer, requestCallback As AsyncCallback, state As Object) As IAsyncResult
Public Function BeginConnect (host As String, port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parâmetros

host
String

O nome do host remoto.The name of the remote host.

port
Int32

O número da porta do host remoto.The port number of the remote host.

requestCallbackcallback
AsyncCallback

Um delegado AsyncCallback que faz referência ao método a ser invocado quando a operação de conexão for concluída.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object

Um objeto definido pelo usuário que contém informações sobre a operação de conexão.A user-defined object that contains information about the connect operation. Esse objeto é passado para o delegado requestCallback quando a operação é concluída.This object is passed to the requestCallback delegate when the operation is complete.

Retornos

IAsyncResult

Um IAsyncResult que faz referência à conexão assíncrona.An IAsyncResult that references the asynchronous connection.

Exceções

host é null.host is null.

O Socket foi fechado.The Socket has been closed.

Este método é válido para soquetes nas famílias InterNetwork ou InterNetworkV6 .This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

O número da porta é inválido.The port number is not valid.

O Socket foi colocado em um estado de escuta chamando Listen(Int32) ou uma operação assíncrona já está em andamento.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Exemplos

O exemplo de código a seguir inicia uma tentativa de conexão assíncrona.The following code example initiates an asynchronous connection attempt.

static ManualResetEvent^ allDone = gcnew ManualResetEvent( false );

// handles the completion of the prior asynchronous 
// connect call. the socket is passed via the objectState 
// paramater of BeginConnect().
static void ConnectCallback1( IAsyncResult^ ar )
{
   allDone->Set();
   Socket^ s = dynamic_cast<Socket^>(ar->AsyncState);
   s->EndConnect( ar );
}


public static ManualResetEvent allDone =
    new ManualResetEvent(false);

// handles the completion of the prior asynchronous
// connect call. the socket is passed via the objectState
// paramater of BeginConnect().
public static void ConnectCallback1(IAsyncResult ar)
{
    allDone.Set();
    Socket s = (Socket) ar.AsyncState;
    s.EndConnect(ar);
}
// Asynchronous connect using host name (resolved by the 
// BeginConnect call.)
static void BeginConnect3( String^ host, int port )
{
   Socket^ s = gcnew Socket( AddressFamily::InterNetwork,SocketType::Stream,ProtocolType::Tcp );
   allDone->Reset();
   Console::WriteLine( "Establishing Connection to {0}", host );
   s->BeginConnect( host, port, gcnew AsyncCallback( ConnectCallback1 ), s );
   
   // wait here until the connect finishes.  The callback 
   // sets allDone.
   allDone->WaitOne();
   Console::WriteLine( "Connection established" );
}


// Asynchronous connect using host name (resolved by the
// BeginConnect call.)
public static void BeginConnect3(string host, int port)
{
    Socket s = new Socket(AddressFamily.InterNetwork,
        SocketType.Stream,
        ProtocolType.Tcp);

    allDone.Reset();

    Console.WriteLine("Establishing Connection to {0}",
        host);
    s.BeginConnect(host, port,
        new AsyncCallback(ConnectCallback1), s);

    // wait here until the connect finishes.  The callback
    // sets allDone.
    allDone.WaitOne();

    Console.WriteLine("Connection established");
}		

Comentários

A operação assíncrona BeginConnect deve ser concluída chamando o EndConnect método.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Normalmente, o método é invocado pelo requestCallback delegado.Typically, the method is invoked by the requestCallback delegate.

Este método não é bloqueado até que a operação seja concluída.This method does not block until the operation is complete. Para bloquear até que a operação seja concluída, use uma das Connect sobrecargas de método.To block until the operation is complete, use one of the Connect method overloads.

Para cancelar uma chamada pendente para o BeginConnect método, feche o Socket .To cancel a pending call to the BeginConnect method, close the Socket. Quando o Close método é chamado enquanto uma operação assíncrona está em andamento, o retorno de chamada fornecido ao BeginConnect método é chamado.When the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Uma chamada subsequente para o EndConnect método gerará um ObjectDisposedException para indicar que a operação foi cancelada.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Para obter informações detalhadas sobre como usar o modelo de programação assíncrona, consulte chamando métodos síncronos de forma assíncronaFor detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Observação

Se você receber um SocketException , use a SocketException.ErrorCode propriedade para obter o código de erro específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. 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.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Observação

Se este Soquete tiver sido desconectado anteriormente, BeginConnect deverá ser chamado em um thread que não será encerrado até que a operação seja concluída.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Essa é uma limitação do provedor subjacente.This is a limitation of the underlying provider. Além disso, o EndPoint que é usado deve ser diferente.Also the EndPoint that is used must be different.

Observação

Esse membro emite o rastreamento de informações quando você ativa o rastreamento de rede em seu aplicativo.This member outputs trace information when you enable network tracing in your application. Para obter mais informações, consulte rastreamento de rede na .NET Framework.For more information, see Network Tracing in the .NET Framework.

Observação

O contexto de execução (o contexto de segurança, o usuário representado e o contexto de chamada) é armazenado em cache para os métodos assíncronos Socket .The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Após o primeiro uso de um contexto específico (um método assíncrono específico Socket , uma Socket instância específica e um retorno de chamada específico), os usos subsequentes desse contexto verão uma melhoria no desempenho.After the first use of a particular context (a specific asynchronous Socket method, a specific Socket instance, and a specific callback), subsequent uses of that context will see a performance improvement.

Confira também

Aplica-se a