Socket.SendPacketsAsync(SocketAsyncEventArgs) 方法

定义

将文件集合或者内存中的数据缓冲区以异步方法发送给连接的 Socket 对象。

public:
 bool SendPacketsAsync(System::Net::Sockets::SocketAsyncEventArgs ^ e);
public bool SendPacketsAsync (System.Net.Sockets.SocketAsyncEventArgs e);
member this.SendPacketsAsync : System.Net.Sockets.SocketAsyncEventArgs -> bool
Public Function SendPacketsAsync (e As SocketAsyncEventArgs) As Boolean

参数

e
SocketAsyncEventArgs

要用于此异步套接字操作的 SocketAsyncEventArgs 对象。

返回

如果 I/O 操作挂起,则为 true。 操作完成时,将引发 e 参数的 Completed 事件。

如果 I/O 操作同步完成,则为 false。 在这种情况下,将不会引发 e 参数的 Completed 事件,并且可能在方法调用返回后立即检查作为参数传递的 e 对象以检索操作的结果。

例外

未找到在 FilePath 属性中指定的文件。

已经在使用 e 参数中指定的 SocketAsyncEventArgs 对象执行套接字操作。

Socket 未连接到远程主机。

使用的是无连接 Socket,并且所发送的文件超过了基础传输的最大数据包大小。

注解

方法 SendPacketsAsync 用于将文件集合或内存数据缓冲区中的文件发送到远程主机。 Socket必须已连接到远程主机。

如果 引用 System.Net.Sockets.SendPacketsElement 工作目录中的文件,则只能使用文件的名称来标识该文件;否则,必须指定文件的完整路径和名称。 支持通配符和 UNC 共享名称。 如果找不到文件, FileNotFoundException 则引发 。

若要收到完成通知,必须创建实现 EventHandler<SocketAsyncEventArgs> 委托的回调方法,并将回调附加到 SocketAsyncEventArgs.Completed 事件。

SocketAsyncEventArgs.SendPacketsFlags参数上的 e 属性为窗口套接字服务提供程序提供有关文件传输的其他信息。 有关如何使用此参数的详细信息,请参阅 TransmitFileOptions

对象上的 System.Net.Sockets.SocketAsyncEventArgs 以下属性和事件是成功调用此方法所必需的:

调用方可以在调用 SendPacketsAsync 方法之前将 属性设置为SocketAsyncEventArgs.UserToken所需的任何用户状态对象,以便在回调方法中检索信息。 如果回调需要比单个对象更多的信息,则可以创建一个小类来保存其他所需的状态信息作为成员。

此方法使用 Windows 套接字 2 API 中的 TransmitPackets 函数。 有关 TransmitPackets 函数及其标志的详细信息,请参阅 Windows 套接字 文档。

虽然该方法适用于面向连接的协议, SendPacketsAsync 但也适用于无连接协议,前提是你首先调用 BeginConnectConnectConnectAsync 方法来建立默认的远程主机。 使用无连接协议时,还必须确保文件大小不超过基础服务提供商的最大数据包大小。 如果存在,则不会发送数据报并 SendPacketsAsync 引发 SocketException 异常。

方法 SendPacketsAsync 根据使用它的操作系统进行优化。 在 Windows 服务器版本中, SendPacketsAsync 方法针对高性能进行了优化。

在 Windows 客户端版本中, SendPacketsAsync 方法已针对最低内存和资源利用率进行了优化。

在 参数的 TransmitFileOptions.UseKernelApc 属性e中使用 SocketAsyncEventArgs.SendPacketsFlags 标志可提供显著的性能优势。 如果发起方法调用的 SendPacketsAsync 线程用于繁重的计算,则可能会阻止启动 APC(尽管不太可能)。 请注意,内核和用户模式 APC 之间存在差异。 当线程处于等待状态时,内核 APC 会启动。 当线程处于可警报等待状态时,用户模式 APC 启动

适用于

另请参阅