Обработка загрузки файлов на SFTP-сервере с удаленным хранилищем файловC#

Место общения программистов C#
Ответить
Anonymous
 Обработка загрузки файлов на SFTP-сервере с удаленным хранилищем файлов

Сообщение Anonymous »

У меня есть SFTP-сервер.
Файлы хранятся на удаленном сервере, и я показываю клиенту поддельную файловую систему.
Когда клиент хочет загрузить файл с помощью запроса ssh_fxp_open, я запускаю новую задачу для загрузки файла в фоновом режиме.
Пока загрузка не завершена, я отправляю на запрос ssh_fxp_read каждого клиента пустые данные.
/>Пример кода:

Код: Выделить всё

HandleOpenRequest(SshData request)
{
.
.
Task.Run(()=>{ /*download the     file; add the file path to concurrentDictionary*/ });
.
.
Send handle
}

HandleReadRequest(SshData request)
{
SshData writer = new SshData();
var requestId request.ReadInt();
var handle = request.ReadString();
if(download complete)
{
fs = get fileStream from dictionary;
var offset = request.ReadInt64();
var length = request.ReadInt();
var buffer = new byte[length];
writer.write(messageType.data);
writer.write(requestId);
.
.
// Handle eof buffer
.
.
fs.Seek(offset, SeekOrigin.Begin);
fs.Read(buffer, 0, buffer.length);
writer.write(buffer);
SendPacket(writer);
}
else
{
// Sleep 1 second;
writer.write(messageType.data);
writer.write(requestId);
writer.write(new byte[0]);
SendPacket(writer);
}
}
Но даже если я отправляю нулевые данные, смещение увеличивается с увеличением длины в каждом запросе.
Я использую WinSCP в качестве SFTP-клиента.
Что я делаю неправильно и как это исправить?
Я пытался изменить размер пакета, но это не помогло.>

Подробнее здесь: https://stackoverflow.com/questions/765 ... file-store
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»