Socket.EndSend 方法

定义

结束挂起的异步发送。

重载

EndSend(IAsyncResult)

结束挂起的异步发送。

EndSend(IAsyncResult, SocketError)

结束挂起的异步发送。

EndSend(IAsyncResult)

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

结束挂起的异步发送。

public:
 int EndSend(IAsyncResult ^ asyncResult);
public int EndSend (IAsyncResult asyncResult);
member this.EndSend : IAsyncResult -> int
Public Function EndSend (asyncResult As IAsyncResult) As Integer

参数

asyncResult
IAsyncResult

IAsyncResult,它存储此异步操作的状态信息。

返回

如果成功,则将返回向 Socket 发送的字节数;否则会返回无效 Socket 错误。

例外

asyncResultnull

先前为异步发送已调用过 EndSend(IAsyncResult)

尝试访问套接字时出错。

- 或 -

仅限 .NET 7+: Socket 已关闭。

仅.NET Framework、.NET Core 和 .NET 5-6:Socket已关闭。

注解

重要

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

EndSend 完成由 BeginSend启动的操作。 需要传递 IAsyncResult 通过匹配 BeginSend 调用创建的 。

如果使用无连接协议, EndSend 将阻止,直到发送数据报。 如果使用面向连接的协议, 将阻止, EndSend 直到发送某些缓冲区。 如果 的 EndSend 返回值指示缓冲区未完全发送,请再次调用 BeginSend 方法,修改缓冲区以保存未发送的数据。

无法保证发送的数据会立即显示在网络上。 为了提高网络效率,基础系统可能会延迟传输,直到收集大量传出数据。 BeginSend成功完成方法意味着基础系统有空间来缓冲网络发送的数据。

注意

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

注意

当给定线程退出时,将取消由该线程发起的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。

注意

发送的成功完成并不表示数据已成功传递。 如果传输系统中没有可用于保存要传输的数据的缓冲区空间,除非套接字处于非阻止模式,否则发送将阻塞。

备注

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

另请参阅

适用于

EndSend(IAsyncResult, SocketError)

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

结束挂起的异步发送。

public:
 int EndSend(IAsyncResult ^ asyncResult, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int EndSend (IAsyncResult asyncResult, out System.Net.Sockets.SocketError errorCode);
member this.EndSend : IAsyncResult * SocketError -> int
Public Function EndSend (asyncResult As IAsyncResult, ByRef errorCode As SocketError) As Integer

参数

asyncResult
IAsyncResult

IAsyncResult,它存储此异步操作的状态信息。

errorCode
SocketError

一个 SocketError 对象,它存储套接字错误。

返回

如果成功,则将返回向 Socket 发送的字节数;否则会返回无效 Socket 错误。

例外

asyncResultnull

先前为异步发送已调用过 EndSend(IAsyncResult)

尝试访问套接字时出错。

- 或 -

仅限 .NET 7+: Socket 已关闭。

仅.NET Framework、.NET Core 和 .NET 5-6:Socket已关闭。

注解

重要

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

EndSend 完成由 BeginSend启动的操作。 需要传递 IAsyncResult 通过匹配 BeginSend 调用创建的 。

如果使用无连接协议, EndSend 将阻止,直到发送数据报。 如果使用面向连接的协议, 将阻止, EndSend 直到发送某些缓冲区。 如果 的 EndSend 返回值指示缓冲区未完全发送,请再次调用 BeginSend 方法,修改缓冲区以保存未发送的数据。

无法保证发送的数据会立即显示在网络上。 为了提高网络效率,基础系统可能会延迟传输,直到收集大量传出数据。 BeginSend成功完成方法意味着基础系统有空间来缓冲网络发送的数据。

注意

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

注意

当给定线程退出时,将取消由该线程发起的所有 I/O。 如果线程在操作完成之前退出,挂起的异步操作可能会失败。

注意

发送的成功完成并不表示数据已成功传递。 如果传输系统中没有可用于保存要传输的数据的缓冲区空间,除非套接字处于非阻止模式,否则发送将阻塞。

备注

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

另请参阅

适用于