Socket.BeginConnect Socket.BeginConnect Socket.BeginConnect Socket.BeginConnect Method

Definición

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection.

Sobrecargas

BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object)

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection.

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

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection. El host se especifica mediante una IPAddress y un número de puerto.The host is specified by an IPAddress and a port number.

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

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection. El host se especifica mediante una matriz IPAddress y un número de puerto.The host is specified by an IPAddress array and a port number.

BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object)

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection. El host se especifica mediante un nombre de host y un número de puerto.The host is specified by a host name and a port number.

BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object) BeginConnect(EndPoint, AsyncCallback, Object)

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection.

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

Parámetros

remoteEP
EndPoint EndPoint EndPoint EndPoint

EndPoint que representa el host remoto.An EndPoint that represents the remote host.

state
Object Object Object Object

Objeto que contiene la información de estado para esta solicitud.An object that contains state information for this request.

Devoluciones

IAsyncResult que hace referencia a la conexión asincrónica.An IAsyncResult that references the asynchronous connection.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Un llamador de la pila de llamadas no tiene permiso para la operación solicitada.A caller higher in the call stack does not have permission for the requested operation.

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32) o ya hay una operación asincrónica en curso.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Ejemplos

En el ejemplo de código siguiente se inicia un intento de conexión asincrónica.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

Comentarios

Si utiliza un protocolo orientado a la conexión, el BeginConnect método inicia una solicitud asincrónica para una conexión remoteEP al parámetro.If you are using a connection-oriented protocol, the BeginConnect method starts an asynchronous request for a connection to the remoteEP parameter. Si utiliza un protocolo sin conexión, BeginConnect establece un host remoto predeterminado.If you are using a connectionless protocol, BeginConnect establishes a default remote host. Conectar o establecer el host remoto predeterminado de forma asincrónica le permite enviar y recibir datos en un subproceso de ejecución independiente.Connecting or setting the default remote host asynchronously gives you the ability to send and receive data within a separate execution thread.

Puede crear un método de devolución de llamada que implemente el AsyncCallback delegado y pasar su nombre BeginConnect al método.You can create a callback method that implements the AsyncCallback delegate and pass its name to the BeginConnect method. Como mínimo, debe pasar Socket a BeginConnect a través del state parámetro.At the very minimum, you must pass the Socket to BeginConnect through the state parameter. Si la devolución de llamada necesita más información, puede crear una clase pequeña para contener Sockety la otra información necesaria.If your callback needs more information, you can create a small class to hold the Socket, and the other required information. Pase una instancia de esta clase al BeginConnect método a través del state parámetro.Pass an instance of this class to the BeginConnect method through the state parameter.

El método de devolución de llamada EndConnect debe invocar el método.Your callback method should invoke the EndConnect method. Cuando la aplicación llama BeginConnecta, el sistema usará un subproceso independiente para ejecutar el método de devolución de llamada especificado y EndConnect se bloqueará hasta que el Socket se conecte correctamente o produzca una excepción.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. Si desea que el subproceso original se bloquee después de BeginConnect llamar al método WaitOne, use.If you want the original thread to block after you call the BeginConnect method, use WaitOne. Llame al método Set en un ManualResetEvent en el método de devolución de llamada cuando desee que el subproceso original continúe ejecutándose.Call the Set method on a ManualResetEvent in the callback method when you want the original thread to continue executing. Para obtener información adicional sobre cómo escribir métodos de devolución de llamada , vea Serialización de un delegado como método de devolución de llamada.For additional information on writing callback methods see Marshaling a Delegate as a Callback Method.

Si utiliza un protocolo sin conexión como UDP, no tiene que llamar BeginConnect a antes de enviar y recibir datos.If you are using a connectionless protocol such as UDP, you do not have to call BeginConnect before sending and receiving data. Puede usar BeginSendTo y BeginReceiveFrom para comunicarse con un host remoto.You can use BeginSendTo and BeginReceiveFrom to communicate with a remote host. Si realiza una llamada BeginConnecta, se descartarán los datagramas que lleguen desde una dirección distinta del valor predeterminado especificado.If you do call BeginConnect, any datagrams that arrive from an address other than the specified default will be discarded. Si desea establecer el host remoto predeterminado en una dirección de difusión, primero debe llamar SetSocketOption a y establecer la difusión en. trueIf you wish to set your default remote host to a broadcast address, you must first call SetSocketOption and set Broadcast to true. Si no es posible BeginConnect , producirá SocketExceptionuna excepción.If you cannot, BeginConnect will throw a SocketException.

Si utiliza un protocolo orientado a la conexión y no llama a Bind antes de BeginConnectllamar a, el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto más apropiados.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. Si utiliza un protocolo sin conexión, el proveedor de servicios no asignará una dirección de red local ni un número de puerto hasta que BeginSend llame ReceiveFrom al método o.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. Si desea cambiar el host remoto predeterminado, vuelva a llamar al BeginConnect método con el punto de conexión deseado.If you want to change the default remote host, call the BeginConnect method again with the desired endpoint.

Para cancelar una llamada pendiente al BeginConnect método, cierre el. SocketTo cancel a pending call to the BeginConnect method, close the Socket. Cuando se llama al BeginConnect métodomientrasunaoperaciónasincrónicaestáencurso,sellamaaladevolucióndellamadaproporcionadaalmétodo.CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Una llamada subsiguiente al EndConnect método producirá una excepción ObjectDisposedException para indicar que la operación se ha cancelado.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Si este socket se ha desconectado previamente, se debe BeginConnect llamar a en un subproceso que no se cierre hasta que se complete la operación.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Esta es una limitación del proveedor subyacente.This is a limitation of the underlying provider.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché Socket para los métodos asincrónicos.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Después del primer uso de un contexto determinado (un Socket método asincrónico concreto, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.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.

Consulte también:

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

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection. El host se especifica mediante una IPAddress y un número de puerto.The host is specified by an IPAddress and a port number.

public:
 IAsyncResult ^ BeginConnect(System::Net::IPAddress ^ address, int port, AsyncCallback ^ callback, System::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
Public Function BeginConnect (address As IPAddress, port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

address
IPAddress IPAddress IPAddress IPAddress

IPAddress del host remoto.The IPAddress of the remote host.

port
Int32 Int32 Int32 Int32

Número de puerto del host remoto.The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

Delegado de AsyncCallback que hace referencia al método que se invocará cuando la operación de conexión se complete.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

Objeto definido por el usuario que contiene información sobre la operación de conexión.A user-defined object that contains information about the connect operation. Este objeto se pasa al delegado de requestCallback cuando la operación se completa.This object is passed to the requestCallback delegate when the operation is complete.

Devoluciones

IAsyncResult que hace referencia a la conexión asincrónica.An IAsyncResult that references the asynchronous connection.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

El Socket no está en la familia de sockets.The Socket is not in the socket family.

La longitud de address es cero.The length of address is zero.

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32) o ya hay una operación asincrónica en curso.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Ejemplos

En el ejemplo de código siguiente se inicia un intento de conexión asincrónica.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");

}		

Comentarios

La BeginConnect operación asincrónica se debe completar EndConnect llamando al método.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Normalmente, el requestCallback delegado invoca el método.Typically, the method is invoked by the requestCallback delegate.

Este método no se bloquea hasta que se completa la operación.This method does not block until the operation is complete. Para bloquear hasta que finalice la operación, utilice una de las Connect sobrecargas del método, EndConnecto.To block until the operation is complete, use one of the Connect method overloads, or EndConnect.

Para cancelar una llamada pendiente al BeginConnect método, cierre el. SocketTo cancel a pending call to the BeginConnect method, close the Socket. Cuando se llama al BeginConnect métodomientrasunaoperaciónasincrónicaestáencurso,sellamaaladevolucióndellamadaproporcionadaalmétodo.CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Una llamada subsiguiente al EndConnect método producirá una excepción ObjectDisposedException para indicar que la operación se ha cancelado.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Para obtener información detallada sobre el uso del modelo de programación asincrónica, consulte llamar a métodos sincrónicos de forma asincrónicaFor detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Si este socket se ha desconectado previamente, se debe BeginConnect llamar a en un subproceso que no se cierre hasta que se complete la operación.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Esta es una limitación del proveedor subyacente.This is a limitation of the underlying provider. Además, EndPoint el que se usa debe ser diferente.Also the EndPoint that is used must be different.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché Socket para los métodos asincrónicos.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Después del primer uso de un contexto determinado (un Socket método asincrónico concreto, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.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.

Consulte también:

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

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection. El host se especifica mediante una matriz IPAddress y un número de puerto.The host is specified by an IPAddress array and a port number.

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 callback, object state);
member this.BeginConnect : System.Net.IPAddress[] * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (addresses As IPAddress(), port As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

Parámetros

addresses
IPAddress[]

Al menos una IPAddress, que designa el host remoto.At least one IPAddress, designating the remote host.

port
Int32 Int32 Int32 Int32

Número de puerto del host remoto.The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

Delegado de AsyncCallback que hace referencia al método que se invocará cuando la operación de conexión se complete.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

Objeto definido por el usuario que contiene información sobre la operación de conexión.A user-defined object that contains information about the connect operation. Este objeto se pasa al delegado de requestCallback cuando la operación se completa.This object is passed to the requestCallback delegate when the operation is complete.

Devoluciones

IAsyncResult que hace referencia a las conexiones asincrónicas.An IAsyncResult that references the asynchronous connections.

Excepciones

Error al intentar acceder al socket.An error occurred when attempting to access the socket.

Este método es válido para sockets que usan InterNetwork o InterNetworkV6.This method is valid for sockets that use InterNetwork or InterNetworkV6.

La longitud de address es cero.The length of address is zero.

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32) o ya hay una operación asincrónica en curso.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Ejemplos

En el ejemplo de código siguiente se inicia un intento de conexión asincrónica.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");
}		

Comentarios

La BeginConnect operación asincrónica se debe completar EndConnect llamando al método.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Normalmente, el requestCallback delegado invoca el método.Typically, the method is invoked by the requestCallback delegate.

Este método no se bloquea hasta que se completa la operación.This method does not block until the operation is complete. Para bloquear hasta que finalice la operación, utilice una de las Connect sobrecargas del método.To block until the operation is complete, use one of the Connect method overloads.

Para cancelar una llamada pendiente al BeginConnect método, cierre el. SocketTo cancel a pending call to the BeginConnect method, close the Socket. Cuando se llama al BeginConnect métodomientrasunaoperaciónasincrónicaestáencurso,sellamaaladevolucióndellamadaproporcionadaalmétodo.CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Una llamada subsiguiente al EndConnect método producirá una excepción ObjectDisposedException para indicar que la operación se ha cancelado.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Para obtener información detallada sobre el uso del modelo de programación asincrónica, vea llamar a métodos sincrónicos de forma asincrónica.For detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Si este socket se ha desconectado previamente, se debe BeginConnect llamar a en un subproceso que no se cierre hasta que se complete la operación.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Esta es una limitación del proveedor subyacente.This is a limitation of the underlying provider. Además, EndPoint el que se usa debe ser diferente.Also the EndPoint that is used must be different.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché Socket para los métodos asincrónicos.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Después del primer uso de un contexto determinado (un Socket método asincrónico concreto, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.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.

Consulte también:

BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object) BeginConnect(String, Int32, AsyncCallback, Object)

Inicia una solicitud asincrónica para una conexión a host remoto.Begins an asynchronous request for a remote host connection. El host se especifica mediante un nombre de host y un número de puerto.The host is specified by a host name and a port number.

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

Parámetros

host
String String String String

Nombre del host remoto.The name of the remote host.

port
Int32 Int32 Int32 Int32

Número de puerto del host remoto.The port number of the remote host.

requestCallback
AsyncCallback AsyncCallback AsyncCallback AsyncCallback

Delegado de AsyncCallback que hace referencia al método que se invocará cuando la operación de conexión se complete.An AsyncCallback delegate that references the method to invoke when the connect operation is complete.

state
Object Object Object Object

Objeto definido por el usuario que contiene información sobre la operación de conexión.A user-defined object that contains information about the connect operation. Este objeto se pasa al delegado de requestCallback cuando la operación se completa.This object is passed to the requestCallback delegate when the operation is complete.

Devoluciones

IAsyncResult que hace referencia a la conexión asincrónica.An IAsyncResult that references the asynchronous connection.

Excepciones

Este método es válido para sockets de las familias InterNetwork o InterNetworkV6.This method is valid for sockets in the InterNetwork or InterNetworkV6 families.

Socket se ha colocado en un estado de escucha mediante una llamada a Listen(Int32) o ya hay una operación asincrónica en curso.The Socket has been placed in a listening state by calling Listen(Int32), or an asynchronous operation is already in progress.

Ejemplos

En el ejemplo de código siguiente se inicia un intento de conexión asincrónica.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");
}		

Comentarios

La BeginConnect operación asincrónica se debe completar EndConnect llamando al método.The asynchronous BeginConnect operation must be completed by calling the EndConnect method. Normalmente, el requestCallback delegado invoca el método.Typically, the method is invoked by the requestCallback delegate.

Este método no se bloquea hasta que se completa la operación.This method does not block until the operation is complete. Para bloquear hasta que finalice la operación, utilice una de las Connect sobrecargas del método.To block until the operation is complete, use one of the Connect method overloads.

Para cancelar una llamada pendiente al BeginConnect método, cierre el. SocketTo cancel a pending call to the BeginConnect method, close the Socket. Cuando se llama al BeginConnect métodomientrasunaoperaciónasincrónicaestáencurso,sellamaaladevolucióndellamadaproporcionadaalmétodo.CloseWhen the Close method is called while an asynchronous operation is in progress, the callback provided to the BeginConnect method is called. Una llamada subsiguiente al EndConnect método producirá una excepción ObjectDisposedException para indicar que la operación se ha cancelado.A subsequent call to the EndConnect method will throw an ObjectDisposedException to indicate that the operation has been cancelled.

Para obtener información detallada sobre el uso del modelo de programación asincrónica, consulte llamar a métodos sincrónicos de forma asincrónicaFor detailed information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously

Nota

Si recibe un SocketException, utilice la SocketException.ErrorCode propiedad para obtener el código de error específico.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Después de obtener este código, consulte la documentación del código de error de la API de Windows Sockets versión 2 para obtener una descripción detallada del error.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Nota

Si este socket se ha desconectado previamente, se debe BeginConnect llamar a en un subproceso que no se cierre hasta que se complete la operación.If this socket has previously been disconnected, then BeginConnect must be called on a thread that will not exit until the operation is complete. Esta es una limitación del proveedor subyacente.This is a limitation of the underlying provider. Además, EndPoint el que se usa debe ser diferente.Also the EndPoint that is used must be different.

Nota

Este miembro genera información de seguimiento cuando se habilita el seguimiento de red en la aplicación.This member outputs trace information when you enable network tracing in your application. Para obtener más información, consulte seguimiento de red en el .NET Framework.For more information, see Network Tracing in the .NET Framework.

Nota

El contexto de ejecución (el contexto de seguridad, el usuario suplantado y el contexto de llamada) se almacena en caché Socket para los métodos asincrónicos.The execution context (the security context, the impersonated user, and the calling context) is cached for the asynchronous Socket methods. Después del primer uso de un contexto determinado (un Socket método asincrónico concreto, una instancia específica Socket y una devolución de llamada específica), los usos posteriores de ese contexto verán una mejora del rendimiento.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.

Consulte también:

Se aplica a