Socket.BeginSendFile 方法

定义

将文件异步发送到连接的 Socket 对象。

重载

BeginSendFile(String, AsyncCallback, Object)

使用 Socket 标志,将文件 fileName 发送到连接的 UseDefaultWorkerThread 对象。

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

将文件和数据缓冲区异步发送到连接的 Socket 对象。

BeginSendFile(String, AsyncCallback, Object)

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

使用 Socket 标志,将文件 fileName 发送到连接的 UseDefaultWorkerThread 对象。

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

参数

fileName
String

一个字符串,它包含要发送的文件的路径和名称。 此参数可以为 null

callback
AsyncCallback

AsyncCallback 委托。

state
Object

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

返回

一个 IAsyncResult 对象,它表示异步发送。

例外

Socket 对象已关闭。

套接字未连接到远程主机。

未找到文件 fileName

仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。 请参见下面的备注部分。

注解

重要

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

此重载通过套接字发送文件 fileName 。 如果 fileName 位于本地目录中,则只能使用文件的名称来标识它;否则,必须指定文件的完整路径和名称。 通配符 (”。支持 \\myfile.txt“) 和 UNC 共享名称 (”\\\\shared directory\\myfile.txt“) 。 如果未找到该文件,则会引发异常 FileNotFoundException

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

BeginSendFile必须通过调用 EndSendFile 方法完成操作。 通常,委托会调用 AsyncCallback 方法。 EndSendFile 将阻止调用线程,直到操作完成。

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

注意

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

备注

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

注意

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

适用于

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

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

将文件和数据缓冲区异步发送到连接的 Socket 对象。

public:
 IAsyncResult ^ BeginSendFile(System::String ^ fileName, cli::array <System::Byte> ^ preBuffer, cli::array <System::Byte> ^ postBuffer, System::Net::Sockets::TransmitFileOptions flags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSendFile (string? fileName, byte[]? preBuffer, byte[]? postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSendFile (string fileName, byte[] preBuffer, byte[] postBuffer, System.Net.Sockets.TransmitFileOptions flags, AsyncCallback callback, object state);
member this.BeginSendFile : string * byte[] * byte[] * System.Net.Sockets.TransmitFileOptions * AsyncCallback * obj -> IAsyncResult
Public Function BeginSendFile (fileName As String, preBuffer As Byte(), postBuffer As Byte(), flags As TransmitFileOptions, callback As AsyncCallback, state As Object) As IAsyncResult

参数

fileName
String

一个字符串,它包含要发送的文件的路径和名称。 此参数可以为 null

preBuffer
Byte[]

发送文件之前要发送的数据。 此参数可以为 null

postBuffer
Byte[]

发送文件后要发送的数据。 此参数可以为 null

flags
TransmitFileOptions

枚举值的按位组合。

callback
AsyncCallback

一个 AsyncCallback 委托,将在此操作完成时调用它。 此参数可以为 null

state
Object

一个用户定义的对象,它包含此请求的状态信息。 此参数可以为 null

返回

一个 IAsyncResult 对象,它表示异步操作。

例外

Socket 对象已关闭。

仅限 .NET Framework 和 .NET 5 及更早版本:尝试访问套接字时出错。 请参见下面的备注部分。

操作系统不是 Windows NT 或更高版本。

- 或 -

套接字未连接到远程主机。

未找到文件 fileName

注解

重要

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

此重载需要要发送的文件的名称和值的按位组合 TransmitFileOptions 。 参数 preBuffer 包含要位于文件之前的任何数据。 postBuffer 包含要关注文件的数据。 如果 fileName 位于本地目录中,则只能使用文件的名称来标识它;否则,必须指定文件的完整路径和名称。 通配符 (”。支持 \\myfile.txt“) 和 UNC 共享名称 (”\\\\shared directory\\myfile.txt“) 。 如果未找到该文件,则会引发异常 FileNotFoundException

参数 flags 提供有关文件传输的其他信息。 有关如何使用此参数的详细信息,请参阅 TransmitFileOptions

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

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

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

注意

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

备注

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

注意

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

适用于