Socket.BeginConnect 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
开始一个对远程主机连接的异步请求。
重载
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
参数
- callback
- AsyncCallback
AsyncCallback 委托。
- state
- Object
包含此请求的状态信息的对象。
返回
引用异步连接的 IAsyncResult。
例外
remoteEP
为 null
。
仅限 .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 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例
适用于
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
参数
- port
- Int32
远程主机的端口号。
- requestCallback
- AsyncCallback
一个 AsyncCallback 委托,它引用连接操作完成时要调用的方法。
- state
- Object
一个用户定义对象,其中包含连接操作的相关信息。 当操作完成时,此对象会被传递给 requestCallback
委托。
返回
引用异步连接的 IAsyncResult。
例外
address
为 null
。
仅限 .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 。 可以使用 BeginSendTo 和 BeginReceiveFrom 与远程主机通信。 如果确实调用 BeginConnect,则将放弃从指定默认值以外的地址到达的任何数据报。 如果要将默认远程主机设置为广播地址,必须先调用 SetSocketOption 并将 Broadcast 设置为 true
。 如果不能, BeginConnect 将引发 SocketException。
如果使用面向连接的协议,并且未在调用 BeginConnect之前调用 Bind ,则基础服务提供商将分配最合适的本地网络地址和端口号。 如果使用无连接协议,则在调用 BeginSend 或 ReceiveFrom 方法之前,服务提供商不会分配本地网络地址和端口号。 如果要更改默认远程主机,请使用所需的终结点再次调用 BeginConnect 方法。
若要取消对 方法的 BeginConnect 挂起调用,请 Socket关闭 。 Close当异步操作正在进行时调用 方法时,将调用提供给方法的BeginConnect回调。 对 方法的EndConnect后续调用将在 .NET 7) 之前引发 (,或在 SocketException .NET 7+) 上引发 ObjectDisposedException (,以指示操作已取消。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
注意
如果此套接字以前已断开连接,则必须 BeginConnect 在操作完成之前不会退出的线程上调用 。 这是基础提供程序的限制。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例
适用于
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
参数
- port
- Int32
远程主机的端口号。
- requestCallback
- AsyncCallback
一个 AsyncCallback 委托,它引用连接操作完成时要调用的方法。
- state
- Object
一个用户定义对象,其中包含连接操作的相关信息。 当操作完成时,此对象会被传递给 requestCallback
委托。
返回
引用异步连接的 IAsyncResult。
例外
addresses
为 null
。
仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。
此方法对使用 InterNetwork 或 InterNetworkV6 的套接字有效。
端口号无效。
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 。 可以使用 BeginSendTo 和 BeginReceiveFrom 与远程主机通信。 如果确实调用 BeginConnect,则将放弃从指定默认值以外的地址到达的任何数据报。 如果要将默认远程主机设置为广播地址,必须先调用 SetSocketOption 并将 Broadcast 设置为 true
。 如果不能, BeginConnect 将引发 SocketException。
如果使用面向连接的协议,并且未在调用 BeginConnect之前调用 Bind ,则基础服务提供商将分配最合适的本地网络地址和端口号。 如果使用无连接协议,则在调用 BeginSend 或 ReceiveFrom 方法之前,服务提供商不会分配本地网络地址和端口号。 如果要更改默认远程主机,请使用所需的终结点再次调用 BeginConnect 方法。
若要取消对 方法的 BeginConnect 挂起调用,请 Socket关闭 。 Close当异步操作正在进行时调用 方法时,将调用提供给方法的BeginConnect回调。 对 方法的EndConnect后续调用将在 .NET 7) 之前引发 (,或在 SocketException .NET 7+) 上引发 ObjectDisposedException (,以指示操作已取消。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
注意
如果此套接字以前已断开连接,则必须 BeginConnect 在操作完成之前不会退出的线程上调用 。 这是基础提供程序的限制。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例
适用于
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。
例外
host
为 null
。
此方法对 InterNetwork 或 InterNetworkV6 系列中的套接字有效。
端口号无效。
已通过调用 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 。 可以使用 BeginSendTo 和 BeginReceiveFrom 与远程主机通信。 如果确实调用 BeginConnect,则将放弃从指定默认值以外的地址到达的任何数据报。 如果要将默认远程主机设置为广播地址,必须先调用 SetSocketOption 并将 Broadcast 设置为 true
。 如果不能, BeginConnect 将引发 SocketException。
如果使用面向连接的协议,并且未在调用 BeginConnect之前调用 Bind ,则基础服务提供商将分配最合适的本地网络地址和端口号。 如果使用无连接协议,则在调用 BeginSend 或 ReceiveFrom 方法之前,服务提供商不会分配本地网络地址和端口号。 如果要更改默认远程主机,请使用所需的终结点再次调用 BeginConnect 方法。
若要取消对 方法的 BeginConnect 挂起调用,请 Socket关闭 。 Close当异步操作正在进行时调用 方法时,将调用提供给方法的BeginConnect回调。 对 方法的EndConnect后续调用将在 .NET 7) 之前引发 (,或在 SocketException .NET 7+) 上引发 ObjectDisposedException (,以指示操作已取消。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
注意
如果以前已断开连接此套接字,则必须 BeginConnect 在操作完成之前不会退出的线程上调用。 这是基础提供程序的限制。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存 (安全上下文、模拟用户和调用上下文) 的执行上下文。 第一次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- AsyncCallback
- EndConnect(IAsyncResult)
- BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例