Socket.ConnectAsync 方法

定义

开始对远程主机建立连接的异步请求。

重载

名称 说明
ConnectAsync(SocketAsyncEventArgs)

开始对远程主机建立连接的异步请求。

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

开始对远程主机建立连接的异步请求。

ConnectAsync(SocketAsyncEventArgs)

开始对远程主机建立连接的异步请求。

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

参数

e
SocketAsyncEventArgs

SocketAsyncEventArgs要用于此异步套接字作的对象。

返回

如果 I/O作挂起,则为 Completed完成作后,将引发参数上的e事件。

false 如果 I/O作同步完成,则为 。 在这种情况下, Completed 不会引发参数上的 e 事件,在 e 方法调用返回以检索作结果后,可以立即检查作为参数传递的对象。

例外

参数无效。 如果指定了多个缓冲区,则该属性不为 null,则 BufferList 会发生此异常。

参数 e 不能为 null, RemoteEndPoint 不能为 null。

Socket正在侦听或套接字作已在使用SocketAsyncEventArgs参数中指定的e对象进行中。

尝试访问套接字时出错。

本地终结点和 RemoteEndPoint 地址系列不同。

调用堆栈中较高级别的调用方没有请求的作的权限。

注解

如果使用面向连接的协议,该方法 ConnectAsync 将启动与远程主机的连接的异步请求。 如果使用无连接协议, ConnectAsync 请建立默认远程主机。

若要收到完成通知,必须创建实现 EventHandler<SocketAsyncEventArgs> 委托并将回调附加到事件的 SocketAsyncEventArgs.Completed 回调方法。

调用方必须将属性SocketAsyncEventArgs.RemoteEndPoint设置为IPEndPoint要连接到的远程主机。

调用方可以在调用SocketAsyncEventArgs.UserToken该方法之前将ConnectAsync属性设置为所需的任何用户状态对象,以便在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来将其他必需的状态信息保存为成员。

如果使用无连接协议(如 UDP),则无需在发送和接收数据之前调用 ConnectAsync 。 可以使用 SendToAsync 远程主机并与 ReceiveFromAsync 远程主机通信。 如果确实调用 ConnectAsync,来自指定默认值以外的地址的任何数据报将被丢弃。 如果要更改默认远程主机,请使用所需的终结点再次调用 ConnectAsync 该方法。

如果要将默认远程主机设置为广播地址,必须首先调用SetSocketOption并设置为“广播”。true 如果未执行此作,该方法 ConnectAsync 将引发一个 SocketException

对象上的 System.Net.Sockets.SocketAsyncEventArgs 以下属性和事件是必需的:

(可选)可以提供一个缓冲区,该方法成功后 ConnectAsync 会在套接字上以原子方式发送。 在这种情况下,需要将 SocketAsyncEventArgs.Buffer 属性设置为包含要发送的数据的缓冲区,并且 SocketAsyncEventArgs.Count 需要将属性设置为要从缓冲区发送的数据字节数。 建立连接后,将发送此数据缓冲区。

如果使用的是面向连接的协议,且在调用之前不调用BindConnectAsync,则基础服务提供商将分配最合适的本地网络地址和端口号。

如果使用无连接协议,则在调用 SendAsyncReceiveAsync 方法之前,服务提供商不会分配本地网络 IP 地址和端口号。

如果地址系列和地址系列ConnectAsync不相同,NotSupportedExceptionSocket该方法将SocketAsyncEventArgs.RemoteEndPoint引发。

注释

如果在调用此方法时收到消息 SocketException ,请使用 SocketException.ErrorCode 该属性获取特定的错误代码。 获取此代码后,有关错误的详细说明,请参阅 Windows 套接字版本 2 API 错误代码 文档。

另请参阅

适用于

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

开始对远程主机建立连接的异步请求。

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

参数

socketType
SocketType

其中一个 SocketType 值。

protocolType
ProtocolType

其中一个 ProtocolType 值。

e
SocketAsyncEventArgs

SocketAsyncEventArgs要用于此异步套接字作的对象。

返回

如果 I/O作挂起,则为 Completed完成作后,将引发参数上的e事件。

false 如果 I/O作同步完成,则为 。 在这种情况下, Completed 不会引发参数上的 e 事件,在 e 方法调用返回以检索作结果后,可以立即检查作为参数传递的对象。

例外

参数无效。 如果指定了多个缓冲区,则该属性不为 null,则 BufferList 会发生此异常。

参数 e 不能为 null, RemoteEndPoint 不能为 null。

Socket正在侦听或套接字作已在使用SocketAsyncEventArgs参数中指定的e对象进行中。

尝试访问套接字时出错。

本地终结点和 RemoteEndPoint 地址系列不同。

调用堆栈中较高级别的调用方没有请求的作的权限。

注解

如果使用面向连接的协议,M:System.Net.Sockets.Socket.ConnectAsync(System.Net.Sockets.SocketType,System.Net.Sockets.ProtocolType,System.Net.Sockets.SocketAsyncEventArgs)方法将启动与远程主机的连接的异步请求。 如果使用无连接协议, ConnectAsync 请建立由 socketType 参数 protocolType 指定的默认远程主机。

若要收到完成通知,必须创建实现 EventHandler<SocketAsyncEventArgs> 委托并将回调附加到事件的 SocketAsyncEventArgs.Completed 回调方法。

调用方必须将属性SocketAsyncEventArgs.RemoteEndPoint设置为IPEndPoint要连接到的远程主机。

调用方可以在调用SocketAsyncEventArgs.UserToken该方法之前将ConnectAsync属性设置为所需的任何用户状态对象,以便在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来将其他必需的状态信息保存为成员。

如果使用无连接协议(如 UDP),则无需在发送和接收数据之前调用 ConnectAsync 。 可以使用 SendToAsync 远程主机并与 ReceiveFromAsync 远程主机通信。 如果确实调用 ConnectAsync,来自指定默认值以外的地址的任何数据报将被丢弃。 如果要更改默认远程主机,请使用所需的终结点再次调用 ConnectAsync 该方法。

如果要将默认远程主机设置为广播地址,必须首先调用SetSocketOption并设置为“广播”。true 如果未执行此作,该方法 ConnectAsync 将引发一个 SocketException

对象上的 System.Net.Sockets.SocketAsyncEventArgs 以下属性和事件是必需的:

(可选)可以提供一个缓冲区,该方法成功后 ConnectAsync 会在套接字上以原子方式发送。 在这种情况下,需要将 SocketAsyncEventArgs.Buffer 属性设置为包含要发送的数据的缓冲区,并且 SocketAsyncEventArgs.Count 需要将属性设置为要从缓冲区发送的数据字节数。 建立连接后,将发送此数据缓冲区。

如果使用的是面向连接的协议,且在调用之前不调用BindConnectAsync,则基础服务提供商将分配最合适的本地网络地址和端口号。

如果使用无连接协议,则在调用 SendAsyncReceiveAsync 方法之前,服务提供商不会分配本地网络 IP 地址和端口号。

如果地址系列和地址系列ConnectAsync不相同,NotSupportedExceptionSocket该方法将SocketAsyncEventArgs.RemoteEndPoint引发。

注释

如果在调用此方法时收到消息 SocketException ,请使用 SocketException.ErrorCode 该属性获取特定的错误代码。 获取此代码后,有关错误的详细说明,请参阅 Windows 套接字版本 2 API 错误代码 文档。

适用于