Поделиться через


Socket.BeginSendFile Метод

Определение

Выполняет асинхронную передачу файла на подключенный объект Socket.

Перегрузки

BeginSendFile(String, AsyncCallback, Object)

Отправляет файл fileName на подключенный объект Socket, используя флаг UseDefaultWorkerThread.

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 экземпляра и определенного обратного вызова) последующие использования этого контекста будут наблюдаться повышение производительности.

Применяется к