Socket.ConnectAsync Método

Definición

Comienza una solicitud asincrónica para una conexión a un host remoto.

Sobrecargas

Nombre Description
ConnectAsync(SocketAsyncEventArgs)

Comienza una solicitud asincrónica para una conexión a un host remoto.

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Comienza una solicitud asincrónica para una conexión a un host remoto.

ConnectAsync(SocketAsyncEventArgs)

Comienza una solicitud asincrónica para una conexión a un host remoto.

public:
 bool ConnectAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool ConnectAsync(System.Net.Sockets.SocketAsyncEventArgs e);
member this.ConnectAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function ConnectAsync (e As SocketAsyncEventArgs) As Boolean

Parámetros

e
SocketAsyncEventArgs

Objeto SocketAsyncEventArgs que se va a usar para esta operación de socket asincrónico.

Devoluciones

true si la operación de E/S está pendiente. El Completed evento en el e parámetro se generará tras la finalización de la operación.

false si la operación de E/S se completó sincrónicamente. En este caso, Completed no se generará el evento en el e parámetro y el e objeto pasado como parámetro se puede examinar inmediatamente después de que la llamada al método devuelva para recuperar el resultado de la operación.

Excepciones

Un argumento no es válido. Esta excepción se produce si se especifican varios búferes, la BufferList propiedad no es null.

El e parámetro no puede ser null y no RemoteEndPoint puede ser null.

la Socket escucha o una operación de socket ya estaba en curso mediante el SocketAsyncEventArgs objeto especificado en el e parámetro .

Error al intentar acceder al socket.

El punto de conexión local y RemoteEndPoint no son la misma familia de direcciones.

Un autor de llamada superior en la pila de llamadas no tiene permiso para la operación solicitada.

Comentarios

Si usa un protocolo orientado a la conexión, el ConnectAsync método inicia una solicitud asincrónica para una conexión al host remoto. Si usa un protocolo sin conexión, ConnectAsync establece un host remoto predeterminado.

Para recibir una notificación de finalización, debe crear un método de devolución de llamada que implemente el delegado EventHandler<SocketAsyncEventArgs> y adjuntar la devolución de llamada al SocketAsyncEventArgs.Completed evento.

El autor de la llamada debe establecer la SocketAsyncEventArgs.RemoteEndPoint propiedad en el IPEndPoint del host remoto al que se va a conectar.

El autor de la llamada puede establecer la SocketAsyncEventArgs.UserToken propiedad en cualquier objeto de estado de usuario deseado antes de llamar al ConnectAsync método , de modo que la información se pueda recuperar en el método de devolución de llamada. Si la devolución de llamada necesita más información que un único objeto, se puede crear una clase pequeña para contener la otra información de estado necesaria como miembros.

Si usa un protocolo sin conexión como UDP, no tiene que llamar ConnectAsync antes de enviar y recibir datos. Puede usar SendToAsync y ReceiveFromAsync comunicarse con un host remoto. Si llama a ConnectAsync, se descartarán los datagramas que lleguen desde una dirección distinta del valor predeterminado especificado. Si desea cambiar el host remoto predeterminado, vuelva a llamar al ConnectAsync método con el punto de conexión deseado.

Si desea establecer el host remoto predeterminado en una dirección de difusión, primero debe llamar SetSocketOption a y establecer Broadcast en true. Si no se hace esto, el ConnectAsync método iniciará una SocketExceptionexcepción .

Se requieren las siguientes propiedades y eventos en el System.Net.Sockets.SocketAsyncEventArgs objeto:

Opcionalmente, se puede proporcionar un búfer que se enviará atómicamente en el socket después de que el ConnectAsync método se realice correctamente. En este caso, la SocketAsyncEventArgs.Buffer propiedad debe establecerse en el búfer que contiene los datos que se van a enviar y la SocketAsyncEventArgs.Count propiedad debe establecerse en el número de bytes de datos que se van a enviar desde el búfer. Una vez establecida una conexión, se envía este búfer de datos.

Si usa un protocolo orientado a la conexión y no llama Bind a antes de llamar a ConnectAsync, el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto más adecuados.

Si usa un protocolo sin conexión, el proveedor de servicios no asignará una dirección IP de red local ni un número de puerto hasta que llame a los SendAsync métodos o ReceiveAsync .

El ConnectAsync método produce NotSupportedException si la familia de direcciones de Socket y SocketAsyncEventArgs.RemoteEndPoint no son la misma familia de direcciones.

Note

Si recibe un al SocketException llamar a este método, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Consulte también

Se aplica a

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

Comienza una solicitud asincrónica para una conexión a un host remoto.

public:
 static bool ConnectAsync(System::Net::Sockets::SocketType socketType, System::Net::Sockets::ProtocolType protocolType, System::Net::Sockets::SocketAsyncEventArgs ^ e);
public static bool ConnectAsync(System.Net.Sockets.SocketType socketType, System.Net.Sockets.ProtocolType protocolType, System.Net.Sockets.SocketAsyncEventArgs e);
static member ConnectAsync : System.Net.Sockets.SocketType * System.Net.Sockets.ProtocolType * System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Shared Function ConnectAsync (socketType As SocketType, protocolType As ProtocolType, e As SocketAsyncEventArgs) As Boolean

Parámetros

socketType
SocketType

Uno de los SocketType valores.

protocolType
ProtocolType

Uno de los ProtocolType valores.

e
SocketAsyncEventArgs

Objeto SocketAsyncEventArgs que se va a usar para esta operación de socket asincrónico.

Devoluciones

true si la operación de E/S está pendiente. El Completed evento en el e parámetro se generará tras la finalización de la operación.

false si la operación de E/S se completó sincrónicamente. En este caso, Completed no se generará el evento en el e parámetro y el e objeto pasado como parámetro se puede examinar inmediatamente después de que la llamada al método devuelva para recuperar el resultado de la operación.

Excepciones

Un argumento no es válido. Esta excepción se produce si se especifican varios búferes, la BufferList propiedad no es null.

El e parámetro no puede ser null y no RemoteEndPoint puede ser null.

la Socket escucha o una operación de socket ya estaba en curso mediante el SocketAsyncEventArgs objeto especificado en el e parámetro .

Error al intentar acceder al socket.

El punto de conexión local y RemoteEndPoint no son la misma familia de direcciones.

Un autor de llamada superior en la pila de llamadas no tiene permiso para la operación solicitada.

Comentarios

Si usa un protocolo orientado a la conexión, el método M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.Sockets.SocketAsyncEventArgs) inicia una solicitud asincrónica para una conexión al host remoto. Si usa un protocolo sin conexión, ConnectAsync establece un host remoto predeterminado especificado por los socketType parámetros y protocolType .

Para recibir una notificación de finalización, debe crear un método de devolución de llamada que implemente el delegado EventHandler<SocketAsyncEventArgs> y adjuntar la devolución de llamada al SocketAsyncEventArgs.Completed evento.

El autor de la llamada debe establecer la SocketAsyncEventArgs.RemoteEndPoint propiedad en el IPEndPoint del host remoto al que se va a conectar.

El autor de la llamada puede establecer la SocketAsyncEventArgs.UserToken propiedad en cualquier objeto de estado de usuario deseado antes de llamar al ConnectAsync método , de modo que la información se pueda recuperar en el método de devolución de llamada. Si la devolución de llamada necesita más información que un único objeto, se puede crear una clase pequeña para contener la otra información de estado necesaria como miembros.

Si usa un protocolo sin conexión como UDP, no tiene que llamar ConnectAsync antes de enviar y recibir datos. Puede usar SendToAsync y ReceiveFromAsync comunicarse con un host remoto. Si llama a ConnectAsync, se descartarán los datagramas que lleguen desde una dirección distinta del valor predeterminado especificado. Si desea cambiar el host remoto predeterminado, vuelva a llamar al ConnectAsync método con el punto de conexión deseado.

Si desea establecer el host remoto predeterminado en una dirección de difusión, primero debe llamar SetSocketOption a y establecer Broadcast en true. Si no se hace esto, el ConnectAsync método iniciará una SocketExceptionexcepción .

Se requieren las siguientes propiedades y eventos en el System.Net.Sockets.SocketAsyncEventArgs objeto:

Opcionalmente, se puede proporcionar un búfer que se enviará atómicamente en el socket después de que el ConnectAsync método se realice correctamente. En este caso, la SocketAsyncEventArgs.Buffer propiedad debe establecerse en el búfer que contiene los datos que se van a enviar y la SocketAsyncEventArgs.Count propiedad debe establecerse en el número de bytes de datos que se van a enviar desde el búfer. Una vez establecida una conexión, se envía este búfer de datos.

Si usa un protocolo orientado a la conexión y no llama Bind a antes de llamar a ConnectAsync, el proveedor de servicios subyacente asignará la dirección de red local y el número de puerto más adecuados.

Si usa un protocolo sin conexión, el proveedor de servicios no asignará una dirección IP de red local ni un número de puerto hasta que llame a los SendAsync métodos o ReceiveAsync .

El ConnectAsync método produce NotSupportedException si la familia de direcciones de Socket y SocketAsyncEventArgs.RemoteEndPoint no son la misma familia de direcciones.

Note

Si recibe un al SocketException llamar a este método, use la SocketException.ErrorCode propiedad para obtener el código de error específico. 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.

Se aplica a