Socket.BeginSendFile 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
将文件异步发送到连接的 Socket 对象。
重载
BeginSendFile(String, AsyncCallback, Object) |
使用 Socket 标志,将文件 |
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 但也适用于无连接协议,前提是首先调用 Connect 或 BeginConnect 方法来建立默认远程主机。 使用无连接协议时,必须确保文件大小不超过基础服务提供程序的最大数据包大小。 如果存在,则不会发送数据报,并 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 及更早版本:尝试访问套接字时出错。 请参见下面的备注部分。
未找到文件 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 但也适用于无连接协议,前提是首先调用 Connect 或 BeginConnect 方法来建立默认远程主机。 使用无连接协议时,必须确保文件大小不超过基础服务提供程序的最大数据包大小。 如果存在,则不会发送数据报,并 BeginSendFile 引发 SocketException 异常。
注意
如果收到 SocketException 异常,请使用 SocketException.ErrorCode 属性获取特定的错误代码。
备注
当你在应用程序中启用网络跟踪后,此成员将输出跟踪信息。 有关详细信息,请参阅 .NET Framework 中的网络跟踪。
注意
为异步 Socket 方法缓存执行上下文 (安全上下文、模拟用户和调用上下文) 。 首次使用特定上下文 (特定异步 Socket 方法、特定 Socket 实例和特定回调) 后,该上下文的后续使用将提高性能。