Socket.BeginSendFile Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Выполняет асинхронную передачу файла на подключенный объект Socket.
Перегрузки
BeginSendFile(String, AsyncCallback, Object) |
Отправляет файл |
BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object) |
Выполняет асинхронную передачу файла и буферов данных на подключенный объект Socket. |
BeginSendFile(String, AsyncCallback, Object)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
Отправляет файл fileName
на подключенный объект Socket, используя флаг 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 и более ранних версий: при попытке доступа к сокету произошла ошибка. См. ниже примeчания к данному разделу.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin*
и End*
) для новой разработки. Вместо этого используйте эквиваленты на Task
основе .
Эта перегрузка отправляет файл fileName
через сокет. Если fileName
находится в локальном каталоге, его можно определить только по имени файла; в противном случае необходимо указать полный путь и имя файла. Подстановочные знаки (". поддерживаются имена общих ресурсов \\myfile.txt") и UNC ("\\shared directory\\myfile.txt"). Если файл не найден, возникает исключение FileNotFoundException .
Вы можете передать обратный вызов, который реализует AsyncCallback для BeginSendFile получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов будет выполняться во время вызова 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)
- Исходный код:
- Socket.cs
- Исходный код:
- Socket.cs
- Исходный код:
- 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 и более ранних версий: при попытке доступа к сокету произошла ошибка. См. ниже примeчания к данному разделу.
Операционной системой не является Windows NT или более поздняя версия.
-или-
Сокет не подключен к удаленному узлу.
Файл fileName
не найден.
Комментарии
Важно!
Это API совместимости. Мы не рекомендуем использовать методы APM (Begin*
и End*
) для новой разработки. Вместо этого используйте эквиваленты на Task
основе .
Для этой перегрузки требуется имя файла, который требуется отправить, и побитовое сочетание значений TransmitFileOptions . Параметр preBuffer
содержит все данные, которые должны предшествовать файлу.
postBuffer
содержит данные, которые вы хотите подписать на файл. Если fileName
находится в локальном каталоге, его можно определить только по имени файла; в противном случае необходимо указать полный путь и имя файла. Подстановочные знаки (". поддерживаются имена общих ресурсов \\myfile.txt") и UNC ("\\shared directory\\myfile.txt"). Если файл не найден, возникает исключение FileNotFoundException .
Параметр flags
предоставляет дополнительные сведения о передаче файлов. Дополнительные сведения об использовании этого параметра см. в разделе TransmitFileOptions.
Вы можете передать обратный вызов, который реализует AsyncCallback для BeginSendFile получения уведомлений о завершении операции. Обратите внимание, что если базовый сетевой стек выполняет операцию синхронно, обратный вызов будет выполняться во время вызова BeginSendFile. В этом случае свойству CompletedSynchronously возвращаемого объекта будет присвоено IAsyncResult значение true
, чтобы указать, что метод завершился синхронно.
AsyncState Используйте свойство объекта , IAsyncResult чтобы получить объект состояния, переданный BeginSendFile в метод .
Операция BeginSendFile должна быть завершена путем вызова EndSendFile метода . Как правило, метод вызывается предоставленным делегатом AsyncCallback . EndSendFile блокирует вызывающий поток до завершения операции.
Хотя он предназначен для протоколов, ориентированных на подключение, BeginSendFile также работает для протоколов без подключения при условии, что вы сначала вызываете Connect метод или BeginConnect для установки удаленного узла по умолчанию. При использовании протоколов без подключения необходимо убедиться, что размер файла не превышает максимальный размер пакета базового поставщика услуг. Если это так, датаграмма не отправляется и BeginSendFile вызывает SocketException исключение.
Примечание
Если вы получили SocketException исключение, используйте свойство , SocketException.ErrorCode чтобы получить конкретный код ошибки.
Примечание
Данный член генерирует сведения трассировки, если в приложении включена трассировка сети. Дополнительные сведения см. в статье Трассировка сети в платформа .NET Framework.
Примечание
Контекст выполнения (контекст безопасности, олицетворенный пользователь и контекст вызова) кэшируется для асинхронных Socket методов. После первого использования определенного контекста (конкретного асинхронного Socket метода, конкретного Socket экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.