Γεια χαρά σε όλους.
Προσπαθώ να φτοιάξω έναν download manager. Σε αυτή τη φάση, λειτουργεί πλήρως, κάνοντας download από οποιοδήποτε url, μετρώντας το download rate, remaining time, tranfer, κτλ...
Αυτό που θέλω να κάνει, είναι να υποστηρίζει resume του download. Δυστυχώς, το Network stream οπως το WebResponse δεν υποστηρίζει Positon ή Seek και έτσι, ενώ διαβάζω το ήδη downloaed αρχείο (πχ. 100ΚΒs) και μπορώ να κανω set/get το postion στο filestream, στον WebResponse stream δεν γίνεται. Έτσι, το download θα πρέπει να αρχίσει από την αρχή.
Καμιά ιδέα για την λύση του προβλήματος?
Για να πάρετε κάποια ιδέα για το τι κάνει: (κάποιο κομμάτι του κώδικα)
WebResponse response;
Stream remoteStream = null;
Stream localStream = null;
WebRequest request = WebRequest.Create(remoteFilename);
response = request.GetResponse();
remoteStream = response.GetResponseStream();
localStream = File.Create(localFilename);
byte[] buffer = new byte[buffersize];
int bytesRead;
do
{
//εδώ εναλλακτικά, στην περίπτωση που θέλω να κάνω resume, θα έπρεπε να αλλάξω το position αλλά υπάρχει το πρόβλημα που αναφέρω
bytesRead = remoteStream.Read(buffer, 0, buffer.Length);
localStream.Write(buffer, 0, bytesRead);
//long μεταβλητές
bytesProcessed += bytesRead;
}while (bytesProcessed < response.ContentLength);