Newsgroup: it.comp.lang.delphi
Titolo: Recuperare file rete

Salve a tutto il ng.
E' la prima volta che scrivo e vi volevo chiedere un'informazione.
Innanzitutto sono super newbie quindi magari le cose che diro' saranno
scontate, superflue e banali.
Considerate ad esempio dei file MP3 su un server web molto grandi
(compilation di musica). (ma non solo MP3)
Volendo scaricare ad esempio la terza canzone della compilation, io so
solamente che questa inizia ad esempio al megabyte n.20 e finisce al
megabyte n.25 di questo intero file  MP3.
Vorrei fare un programmino in delphi che mi scarica solamente quella
porzione di file. E' fattibile secondo voi? Con quale componente Indy
potrei iniziare? 
Mi consigliate di lavorare con TFileStream o con gli Handle?
Scusate ancora la stupiditą delle domande.
Attendo lumi.
Grazie.
legolas
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 porzione di file. E' fattibile secondo voi?
Tutto č fattibile, ma questo non č molto semplice.
Innanzitutto dovresti scomporre l' applicazione in un lato client che
richiede al Server quale canzone desidera ed un lato Server che deve, in
serie, compiere queste operazioni:
1 - Aprire il mega - file
2 - Conoscerne la struttura interna dunque posizionarsi sull' offset
corretto e copiare in un buffer la sequenza di bit che corrisponde alla
canzone richiesta dal client.
3 - Creare un file contenente questo "buffer"
4 - Spedire il file all' applicazione client.
Se sei un newbie ti consiglio di partire con qualcosa di decisamente piů
semplice.
--
- Carlo -

 4 - Spedire il file all' applicazione client.
Grazie per la risposta.
Il problema č che questi file voluminosi non risiedono dove dovrebbe girare
l'applicazione server, quindi come mi proponi tu, il server dovrebbe
scaricare l'intero file nel proprio HD, e mandarlo poi pezzo a pezzo ai
client che ne richiedono un pezzo?
Io avevo pensato una cosa molto piů spicciola (ma forse una cretinata) e
cioč.
Il client sa che la parte che gli interessa inizia a 1.2 MB e finisce a 1.4
MB.
Automaticamente si collega all'url del file in questione ma invece di
scaricarlo tutto, l'offset avanza nel file remoto a 1.2MB  e comincia a
scaricare fino a quando non arriva a 1.4 MB, dove si interrompe. (mi chiedo:
fantascienza?).
Nella speranza di vagare sempre meno in questi tetri cunicoli oscuri e
tenebrosi della programmazione su file, aspetto trepidante e ansioso quel
barlume di luce che potrebbe illuminare la mia mente alquanto confusa.
Ciao
legolas

 barlume di luce che potrebbe illuminare la mia mente alquanto confusa.
Il discorso č questo: scrivendo un applicazione Client/Server tu avresti
definito una sorta di protocollo tuo che ad una determinata richiesta
(esempio: myprotocol://path/file:startoffset:endoffset) risponde nel modo
corretto. E' tuttavia ovvio che questo genere di protocollo non sia mai
stato creato: i file inseriscono generalmente le informazioni a loro utili
in testa ed in coda per cui scaricando solo "parte" di questo file avresti
un' informazione, nel migliore dei casi, illeggibile senza apposite
operazioni (ad esempio su un file video si dovrebbe effettuare la
ricostruzione degli indici). In altri casi il file risulterebbe
completamente illeggibile.
Posso chiederti perchč devi realizzare un' applicazione simile?
--
- Carlo -

Il protocollo FTP prevede la possibilita' di fare il "resume" di un file,
che teoricamente serve per riprendere un download interrotto.
Ora, tu potresti usare questa caratteristica per scaricare "a partire da" un
certo offset. Poi puoi cancellare il trasferimento dopo che hai ricevuto la
quantita' di dati che ti serviva (tot mega).
Questo in teoria e' fattibile, solo che in pratica i componenti gia' pronti
per l'FTP (come ad esempio INDY), non sono predisposti per questi
trucchetti, quindi probabilmente se vuoi implementare questo sistema dovrai
fare tutto da zero o quasi, e per un newbie e' una cosa parecchio
complicata.
Ciao!

Non sono ferratissimo in materia ma potresti "falsificare" una sorta di file
per poi farne un "RESUME".
Mi spiego....se devi prelevare il file da un server FTP epr esempio ti
colleghi al server, saic eh devi cominciare a 1.2Mbytes.....generi con il
tuo programma un file locale con los tesso nome FINTO di 1.2Mbytes, lo
"trucchi" in modo ceh sembri proprio quel file (checksum forse? Ora non
saprei dirti come avviene il riconoscimento...) e poi fari partire il
resume. QUando arrivi a 1.4Mbytes interrompo lo scaricamento.....e il
programma a questo punto apre il file finto+parzial e scaricato e rimuove la
aprte finta iniziale.
Sporchissima come cosa ma forse funziona....che ve ne pare?
--
Giulio Pipitone (
www.Fighters4web.com
)
Libera associazione contro abusi in rete
Mirror italiano 
http://spam.abuse.net