Socket.BeginConnect 方法

定义

开始一个对远程主机连接的异步请求。

重载

BeginConnect(EndPoint, AsyncCallback, Object)

开始一个对远程主机连接的异步请求。

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

开始一个对远程主机连接的异步请求。 主机由 IPAddress 和端口号指定。

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

开始一个对远程主机连接的异步请求。 主机由 IPAddress 数组和端口号指定。

BeginConnect(String, Int32, AsyncCallback, Object)

开始一个对远程主机连接的异步请求。 主机由主机名和端口号指定。

BeginConnect(EndPoint, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

开始一个对远程主机连接的异步请求。

public:
 IAsyncResult ^ BeginConnect(System::Net::EndPoint ^ remoteEP, 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);
member this.BeginConnect : System.Net.EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginConnect (remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult

参数

remoteEP
EndPoint

EndPoint,它表示远程主机。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

包含此请求的状态信息的对象。

返回

引用异步连接的 IAsyncResult

例外

remoteEPnull

仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。

调用堆栈中的较高调用方无权执行所请求的操作。

已通过调用 Listen(Int32)Socket 置于侦听状态,或异步操作已在进行中。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新的开发。 请改用 Task基于 的等效项。

面向连接的协议可以使用 BeginAccept 方法开始接受传入的连接尝试。 生成的接受操作由返回 IAsyncResult 的 表示,即使它可以同步完成。 在调用 BeginAccept 方法之前,必须调用 Listen 方法来侦听和排队传入的连接请求。

可以将实现 的AsyncCallbackBeginAccept回调传递给 ,以便收到有关接受操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,则回调可能会在调用 BeginAccept期间内联执行。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginAccept 方法的状态对象。

BeginAccept必须通过调用 EndAccept 方法完成操作。 通常,方法由提供的 AsyncCallback 委托调用。 EndAccept 将阻止调用线程,直到操作完成。

若要取消对 方法的 BeginAccept 挂起调用,请 Socket关闭 。 Close当异步操作正在进行时调用 方法时,将调用提供给方法的BeginAccept回调。 对 方法的EndAccept后续调用将在 .NET 7) 之前引发 (,或在 SocketException .NET 7+) 上引发 ObjectDisposedException (,以指示操作已取消。

注意

可以使用 RemoteEndPoint 返回 Socket 的 的 属性来标识远程主机的网络地址和端口号。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

开始一个对远程主机连接的异步请求。 主机由 IPAddress 和端口号指定。

public:
 IAsyncResult ^ BeginConnect(System::Net::IPAddress ^ address, int port, AsyncCallback ^ requestCallback, 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);
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

参数

address
IPAddress

远程主机的 IPAddress

port
Int32

远程主机的端口号。

requestCallback
AsyncCallback

一个 AsyncCallback 委托,它引用连接操作完成时要调用的方法。

state
Object

一个用户定义对象,其中包含连接操作的相关信息。 当操作完成时,此对象会被传递给 requestCallback 委托。

返回

引用异步连接的 IAsyncResult

例外

addressnull

仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。

Socket 不在套接字族中。

端口号无效。

address 的长度为零。

已通过调用 Listen(Int32)Socket 置于侦听状态,或异步操作已在进行中。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新的开发。 请改用 Task基于 的等效项。

如果使用面向连接的协议, BeginConnect 方法将启动异步请求,请求连接到 由 remoteEP 参数指定的终结点。 如果使用无连接协议, BeginConnect 则建立默认远程主机。

可以将实现 的AsyncCallbackBeginConnect回调传递给 ,以获取有关连接操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,则回调可能会在调用 BeginConnect期间内联执行。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginConnect 方法的状态对象。

BeginConnect必须通过调用 EndConnect 方法完成操作。 通常,方法由提供的 AsyncCallback 委托调用。 EndConnect 将阻止调用线程,直到操作完成。

如果使用 UDP 等无连接协议,则不必在发送和接收数据之前调用 BeginConnect 。 可以使用 BeginSendToBeginReceiveFrom 与远程主机通信。 如果确实调用 BeginConnect,则将放弃从指定默认值以外的地址到达的任何数据报。 如果要将默认远程主机设置为广播地址,必须先调用 SetSocketOption 并将 Broadcast 设置为 true。 如果不能, BeginConnect 将引发 SocketException

如果使用面向连接的协议,并且未在调用 BeginConnect之前调用 Bind ,则基础服务提供商将分配最合适的本地网络地址和端口号。 如果使用无连接协议,则在调用 BeginSendReceiveFrom 方法之前,服务提供商不会分配本地网络地址和端口号。 如果要更改默认远程主机,请使用所需的终结点再次调用 BeginConnect 方法。

若要取消对 方法的 BeginConnect 挂起调用,请 Socket关闭 。 Close当异步操作正在进行时调用 方法时,将调用提供给方法的BeginConnect回调。 对 方法的EndConnect后续调用将在 .NET 7) 之前引发 (,或在 SocketException .NET 7+) 上引发 ObjectDisposedException (,以指示操作已取消。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

注意

如果此套接字以前已断开连接,则必须 BeginConnect 在操作完成之前不会退出的线程上调用 。 这是基础提供程序的限制。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存 (安全上下文、模拟用户和调用上下文) 的执行上下文。 第一次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于

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

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

开始一个对远程主机连接的异步请求。 主机由 IPAddress 数组和端口号指定。

public:
 IAsyncResult ^ BeginConnect(cli::array <System::Net::IPAddress ^> ^ addresses, int port, AsyncCallback ^ requestCallback, 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);
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

参数

addresses
IPAddress[]

至少一个用于指定远程主机的 IPAddress

port
Int32

远程主机的端口号。

requestCallback
AsyncCallback

一个 AsyncCallback 委托,它引用连接操作完成时要调用的方法。

state
Object

一个用户定义对象,其中包含连接操作的相关信息。 当操作完成时,此对象会被传递给 requestCallback 委托。

返回

引用异步连接的 IAsyncResult

例外

addressesnull

仅.NET Framework和 .NET 5 及更早版本:尝试访问套接字时出错。

此方法对使用 InterNetworkInterNetworkV6 的套接字有效。

端口号无效。

address 的长度为零。

已通过调用 Listen(Int32)Socket 置于侦听状态,或异步操作已在进行中。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新开发。 请改用 Task基于 的等效项。

如果使用的是面向连接的协议,则 BeginConnect 方法会启动异步请求,请求连接到 参数 remoteEP 指定的 endpoit。 如果使用无连接协议, BeginConnect 则建立默认远程主机。

可以将实现的AsyncCallbackBeginConnect回调传递给 ,以获取有关连接操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,则回调可能会在调用 BeginConnect期间内联执行。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示该方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginConnect 方法的状态对象。

BeginConnect必须通过调用 EndConnect 方法完成操作。 通常,方法由提供的 AsyncCallback 委托调用。 EndConnect 将阻止调用线程,直到操作完成。

如果使用 UDP 等无连接协议,则无需在发送和接收数据之前调用 BeginConnect 。 可以使用 BeginSendToBeginReceiveFrom 与远程主机通信。 如果调用 BeginConnect,则将放弃从指定默认值以外的地址到达的任何数据报。 如果要将默认远程主机设置为广播地址,必须先调用 SetSocketOption Broadcast 并将其设置为 true。 如果不能, BeginConnect 将引发 SocketException

如果使用面向连接的协议,并且未在调用 BeginConnect之前调用 Bind ,则基础服务提供商将分配最合适的本地网络地址和端口号。 如果使用无连接协议,则在调用 BeginSendReceiveFrom 方法之前,服务提供商不会分配本地网络地址和端口号。 如果要更改默认远程主机,请使用所需的终结点再次调用 BeginConnect 方法。

若要取消对 方法的 BeginConnect 挂起调用,请 Socket关闭 。 Close在异步操作正在进行时调用 方法时,将调用提供给 方法的BeginConnect回调。 对 方法的后续调用 EndConnect 将在 .NET 7) 之前引发 ObjectDisposedException (,或 SocketException .NET 7+) 上的 (,以指示操作已取消。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

注意

如果以前已断开连接此套接字,则必须 BeginConnect 在操作完成之前不会退出的线程上调用。 这是基础提供程序的限制。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存 (安全上下文、模拟用户和调用上下文) 的执行上下文。 第一次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于

BeginConnect(String, Int32, AsyncCallback, Object)

Source:
Socket.cs
Source:
Socket.cs
Source:
Socket.cs

开始一个对远程主机连接的异步请求。 主机由主机名和端口号指定。

public:
 IAsyncResult ^ BeginConnect(System::String ^ host, int port, AsyncCallback ^ requestCallback, 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);
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

参数

host
String

远程主机的名称。

port
Int32

远程主机的端口号。

requestCallback
AsyncCallback

一个 AsyncCallback 委托,它引用连接操作完成时要调用的方法。

state
Object

一个用户定义对象,其中包含连接操作的相关信息。 当操作完成时,此对象会被传递给 requestCallback 委托。

返回

引用异步连接的 IAsyncResult

例外

hostnull

此方法对 InterNetworkInterNetworkV6 系列中的套接字有效。

端口号无效。

已通过调用 Listen(Int32)Socket 置于侦听状态,或异步操作已在进行中。

注解

重要

这是一个兼容性 API。 不建议使用 APM (Begin*End*) 方法进行新开发。 请改用 Task基于 的等效项。

如果使用的是面向连接的协议,则 BeginConnect 方法会启动异步请求,请求连接到 参数 remoteEP 指定的 endpoit。 如果使用无连接协议, BeginConnect 则建立默认远程主机。

可以将实现的AsyncCallbackBeginConnect回调传递给 ,以获取有关连接操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,则回调可能会在调用 BeginConnect期间内联执行。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true 以指示该方法同步完成。 AsyncState使用 的 IAsyncResult 属性获取传递给 BeginConnect 方法的状态对象。

BeginConnect必须通过调用 EndConnect 方法完成操作。 通常,方法由提供的 AsyncCallback 委托调用。 EndConnect 将阻止调用线程,直到操作完成。

如果使用 UDP 等无连接协议,则无需在发送和接收数据之前调用 BeginConnect 。 可以使用 BeginSendToBeginReceiveFrom 与远程主机通信。 如果调用 BeginConnect,则将放弃从指定默认值以外的地址到达的任何数据报。 如果要将默认远程主机设置为广播地址,必须先调用 SetSocketOption Broadcast 并将其设置为 true。 如果不能, BeginConnect 将引发 SocketException

如果使用面向连接的协议,并且未在调用 BeginConnect之前调用 Bind ,则基础服务提供商将分配最合适的本地网络地址和端口号。 如果使用无连接协议,则在调用 BeginSendReceiveFrom 方法之前,服务提供商不会分配本地网络地址和端口号。 如果要更改默认远程主机,请使用所需的终结点再次调用 BeginConnect 方法。

若要取消对 方法的 BeginConnect 挂起调用,请 Socket关闭 。 Close在异步操作正在进行时调用 方法时,将调用提供给 方法的BeginConnect回调。 对 方法的后续调用 EndConnect 将在 .NET 7) 之前引发 ObjectDisposedException (,或 SocketException .NET 7+) 上的 (,以指示操作已取消。

注意

如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。

注意

如果此套接字以前已断开连接,则必须 BeginConnect 在操作完成之前不会退出的线程上调用 。 这是基础提供程序的限制。

备注

当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪

注意

为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于