Socket.BeginReceive 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
开始从连接的 Socket 中异步接收数据。
重载
BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
开始从连接的 Socket 中异步接收数据。
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
参数
- offset
- Int32
buffer
中存储所接收数据的位置。
- size
- Int32
要接收的字节数。
- socketFlags
- SocketFlags
SocketFlags 值的按位组合。
- errorCode
- SocketError
一个 SocketError 对象,它存储套接字错误。
- callback
- AsyncCallback
一个 AsyncCallback 委托,它引用操作完成时要调用的方法。
- state
- Object
一个用户定义的对象,其中包含接收操作的相关信息。 当操作完成时,此对象会被传递给 EndReceive(IAsyncResult) 委托。
返回
引用异步读的 IAsyncResult。
例外
buffer
为 null
。
仅.NET Framework和 .NET 5 及更早版本:尝试访问套接字时出错。
offset
小于 0。
或
offset
大于 buffer
的长度。
或
size
小于 0。
- 或 -
size
大于 buffer
的长度减去 offset
参数的值。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin*
和 End*
) 方法进行新开发。 请改用 Task
基于 的等效项。
可以将实现的AsyncCallbackBeginReceive回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginReceive期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true
以指示该方法同步完成。
AsyncState使用 的 IAsyncResult 属性获取传递给 BeginReceive 方法的状态对象。
BeginReceive异步操作必须通过调用 EndReceive 方法完成。 通常,委托调用 AsyncCallback 方法。 EndReceive 将阻止调用线程,直到操作完成。
关闭 以 Socket 取消挂起 BeginReceive的 。 Close在异步操作正在进行时调用 方法时,将调用提供给 方法的BeginReceive回调。 对 方法的后续调用 EndReceive 将在 .NET 7) 之前引发 ObjectDisposedException (,或 SocketException .NET 7+) 上的 (,以指示操作已取消。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
注意
当给定线程退出时,将取消由给定线程启动的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。
注意
state
是用户定义的类的实例化。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存 (安全上下文、模拟用户和调用上下文) 的执行上下文。 第一次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例
适用于
BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
开始从连接的 Socket 中异步接收数据。
public:
IAsyncResult ^ BeginReceive(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
参数
- offset
- Int32
buffer
参数中存储所接收数据的位置,该位置从零开始计数。
- size
- Int32
要接收的字节数。
- socketFlags
- SocketFlags
SocketFlags 值的按位组合。
- callback
- AsyncCallback
一个 AsyncCallback 委托,它引用操作完成时要调用的方法。
- state
- Object
一个用户定义的对象,其中包含接收操作的相关信息。 当操作完成时,此对象会被传递给 EndReceive(IAsyncResult) 委托。
返回
引用异步读的 IAsyncResult。
例外
buffer
为 null
。
仅.NET Framework和 .NET 5 及更早版本:尝试访问套接字时出错。
offset
小于 0。
或
offset
大于 buffer
的长度。
或
size
小于 0。
- 或 -
size
大于 buffer
的长度减去 offset
参数的值。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin*
和 End*
) 方法进行新开发。 请改用 Task
基于 的等效项。
可以将实现的AsyncCallbackBeginReceive回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginReceive期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true
以指示该方法同步完成。
AsyncState使用 的 IAsyncResult 属性获取传递给 BeginReceive 方法的状态对象。
BeginReceive异步操作必须通过调用 EndReceive 方法完成。 通常,委托调用 AsyncCallback 方法。 EndReceive 将阻止调用线程,直到操作完成。
关闭 以 Socket 取消挂起 BeginReceive的 。 Close在异步操作正在进行时调用 方法时,将调用提供给 方法的BeginReceive回调。 对 方法的后续调用 EndReceive 将在 .NET 7) 之前引发 ObjectDisposedException (,或 SocketException .NET 7+) 上的 (,以指示操作已取消。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
注意
当给定线程退出时,将取消由给定线程启动的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。
注意
state
是用户定义的类的实例化。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例
适用于
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
开始从连接的 Socket 中异步接收数据。
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult
参数
- buffers
- IList<ArraySegment<Byte>>
Byte 类型的数组,它是存储接收到的数据的位置。
- socketFlags
- SocketFlags
SocketFlags 值的按位组合。
- callback
- AsyncCallback
一个 AsyncCallback 委托,它引用操作完成时要调用的方法。
- state
- Object
一个用户定义的对象,其中包含接收操作的相关信息。 当操作完成时,此对象会被传递给 EndReceive(IAsyncResult) 委托。
返回
引用异步读的 IAsyncResult。
例外
buffer
为 null
。
仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin*
和 End*
) 方法进行新的开发。 请改用 Task
基于 的等效项。
可以将实现 的AsyncCallbackBeginReceive回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginReceive期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true
以指示方法同步完成。
AsyncState使用 的 IAsyncResult 属性获取传递给 BeginReceive 方法的状态对象。
BeginReceive异步操作必须通过调用 EndReceive 方法来完成。 通常,委托会调用 AsyncCallback 方法。 EndReceive 将阻止调用线程,直到操作完成。
关闭 以 Socket 取消挂起 BeginReceive的 。 Close当异步操作正在进行时调用 方法时,将调用提供给方法的BeginReceive回调。 对 方法的EndReceive后续调用将在 .NET 7) 之前引发 (,或在 SocketException .NET 7+) 上引发 ObjectDisposedException (,以指示操作已取消。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
注意
当给定线程退出时,将取消由该线程发起的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。
注意
state
是用户定义的类的实例化。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例
适用于
BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)
- Source:
- Socket.cs
- Source:
- Socket.cs
- Source:
- Socket.cs
开始从连接的 Socket 中异步接收数据。
public:
IAsyncResult ^ BeginReceive(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceive (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginReceive : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceive (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult
参数
- buffers
- IList<ArraySegment<Byte>>
Byte 类型的数组,它是存储接收到的数据的位置。
- socketFlags
- SocketFlags
SocketFlags 值的按位组合。
- errorCode
- SocketError
一个 SocketError 对象,它存储套接字错误。
- callback
- AsyncCallback
一个 AsyncCallback 委托,它引用操作完成时要调用的方法。
- state
- Object
一个用户定义的对象,其中包含接收操作的相关信息。 当操作完成时,此对象会被传递给 EndReceive(IAsyncResult) 委托。
返回
引用异步读的 IAsyncResult。
例外
buffer
为 null
。
仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。
注解
重要
这是一个兼容性 API。 不建议使用 APM (Begin*
和 End*
) 方法进行新的开发。 请改用 Task
基于 的等效项。
可以将实现 的AsyncCallbackBeginReceive回调传递给 ,以获取有关操作完成的通知。 请注意,如果基础网络堆栈同步完成操作,将在调用 BeginReceive期间内联执行回调。 在这种情况下, CompletedSynchronously 返回 IAsyncResult 的 上的 属性将设置为 true
以指示方法同步完成。
AsyncState使用 的 IAsyncResult 属性获取传递给 BeginReceive 方法的状态对象。
BeginReceive异步操作必须通过调用 EndReceive 方法来完成。 通常,委托会调用 AsyncCallback 方法。 EndReceive 将阻止调用线程,直到操作完成。
关闭 以 Socket 取消挂起 BeginReceive的 。 Close当异步操作正在进行时调用 方法时,将调用提供给方法的BeginReceive回调。 对 方法的EndReceive后续调用将在 .NET 7) 之前引发 (,或在 SocketException .NET 7+) 上引发 ObjectDisposedException (,以指示操作已取消。
注意
如果收到 , SocketException请使用 SocketException.ErrorCode 属性获取特定的错误代码。
注意
当给定线程退出时,将取消由该线程发起的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。
注意
state
是用户定义的类的实例化。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。
另请参阅
- EndAccept(IAsyncResult)
- AsyncCallback
- Connect(EndPoint)
- BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)
- 将委托作为回调方法进行封送
- 异步客户端套接字示例
- 异步服务器套接字示例