Verwalten Sie den Dateidownload auf dem SFTP-Server mit Remote-DateispeicherC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Verwalten Sie den Dateidownload auf dem SFTP-Server mit Remote-Dateispeicher

Post by Anonymous »

Ich habe einen SFTP-Server.
Die Dateien werden auf einem Remote-Server gespeichert und ich zeige dem Client ein gefälschtes Dateisystem.
Wenn der Client eine Datei herunterladen möchte, führe ich mit der ssh_fxp_open-Anfrage eine neue Aufgabe aus, um die Datei im Hintergrund herunterzuladen.
Während der Download noch nicht abgeschlossen ist, sende ich an die ssh_fxp_read-Anfrage jedes Clients leere Daten.
Codebeispiel:

Code: Select all

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);
}
}
Aber selbst wenn ich keine Daten sende, erhöht sich der Offset mit der Längengröße bei jeder Anfrage.
Ich verwende WinSCP als SFTP-Client.
Was mache ich falsch und wie kann ich das beheben?
Ich habe versucht, die Paketgröße zu ändern, aber es hat nicht geholfen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post