Socket.BeginAccept 方法

定义

开始一个异步操作来接受一个传入的连接尝试。

重载

BeginAccept(AsyncCallback, Object)

开始一个异步操作来接受一个传入的连接尝试。

BeginAccept(Int32, AsyncCallback, Object)

开始异步操作以接受传入的连接尝试并接收客户端应用程序发送的第一个数据块。

BeginAccept(Socket, Int32, AsyncCallback, Object)

开始异步操作以接受从指定套接字传入的连接尝试并接收客户端应用程序发送的第一个数据块。

BeginAccept(AsyncCallback, Object)

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

开始一个异步操作来接受一个传入的连接尝试。

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

参数

callback
AsyncCallback

AsyncCallback 委托。

state
Object

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

返回

一个 IAsyncResult,它引用异步 Socket 创建。

例外

Socket 对象已关闭。

正在接受的套接字不会侦听连接。 在调用 Bind(EndPoint) 之前必须调用 Listen(Int32)BeginAccept(AsyncCallback, Object)

- 或 -

已接受的套接字是绑定的。

receiveSize 小于 0。

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

注解

重要

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

面向连接的协议可以使用 BeginAccept 方法开始接受传入的连接尝试。 在调用 BeginAccept 方法之前,必须调用 Listen 方法来侦听和排队传入的连接请求。

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

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

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

注意

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

注意

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

备注

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

注意

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

另请参阅

适用于

BeginAccept(Int32, AsyncCallback, Object)

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

开始异步操作以接受传入的连接尝试并接收客户端应用程序发送的第一个数据块。

public:
 IAsyncResult ^ BeginAccept(int receiveSize, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (int receiveSize, AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (int receiveSize, AsyncCallback callback, object state);
member this.BeginAccept : int * AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (receiveSize As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

参数

receiveSize
Int32

要从发送方读取的字节数。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

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

返回

一个 IAsyncResult,它引用异步 Socket 创建。

例外

Socket 对象已关闭。

正在接受的套接字不会侦听连接。 在调用 Bind(EndPoint) 之前必须调用 Listen(Int32)BeginAccept(AsyncCallback, Object)

- 或 -

已接受的套接字是绑定的。

receiveSize 小于 0。

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

注解

重要

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

面向连接的协议可以使用 BeginAccept 方法开始接受传入的连接尝试。 在调用 BeginAccept 方法之前,必须调用 Listen 方法来侦听和排队传入的连接请求。

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

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

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

注意

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

注意

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

备注

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

注意

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

另请参阅

适用于

BeginAccept(Socket, Int32, AsyncCallback, Object)

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

开始异步操作以接受从指定套接字传入的连接尝试并接收客户端应用程序发送的第一个数据块。

public:
 IAsyncResult ^ BeginAccept(System::Net::Sockets::Socket ^ acceptSocket, int receiveSize, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginAccept (System.Net.Sockets.Socket? acceptSocket, int receiveSize, AsyncCallback? callback, object? state);
public IAsyncResult BeginAccept (System.Net.Sockets.Socket acceptSocket, int receiveSize, AsyncCallback callback, object state);
member this.BeginAccept : System.Net.Sockets.Socket * int * AsyncCallback * obj -> IAsyncResult
Public Function BeginAccept (acceptSocket As Socket, receiveSize As Integer, callback As AsyncCallback, state As Object) As IAsyncResult

参数

acceptSocket
Socket

接受的 Socket 对象。 此值可为 null

receiveSize
Int32

要接收的最大字节数。

callback
AsyncCallback

AsyncCallback 委托。

state
Object

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

返回

一个 IAsyncResult 对象,它引用异步 Socket 对象创建。

例外

Socket 对象已关闭。

正在接受的套接字不会侦听连接。 在调用 Bind(EndPoint) 之前必须调用 Listen(Int32)BeginAccept(AsyncCallback, Object)

- 或 -

已接受的套接字是绑定的。

receiveSize 小于 0。

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

注解

重要

这是一个兼容性 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 实例和特定回调) 后,该上下文的后续使用将提高性能。

另请参阅

适用于