Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312

    dubbio sul trasferimento filevia socket

    Salve a tutti,
    devo realizzare un'architttura client-server che permette il trasferimento di file dal server verso il client che li visualizza.
    Ho usato l'objectInputStream.
    CLIENT
    ObjectInputStream ois = new ObjectInputStream(download.getInputStream());
    Object o = ois.readObject();
    File f = (File) o;
    La mia domanda è: ho il file vero e proprio trasferito oppure in f ho solamente il puntatore al file originale? In quanto mi permette di stampare il path dove è il file originario nel server.

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: dubbio sul trasferimento filevia socket

    Originariamente inviato da lio.b
    ho il file vero e proprio trasferito
    Assolutamente no.

    Originariamente inviato da lio.b
    oppure in f ho solamente il puntatore al file originale?
    Un java.io.File rappresenta solo una "astrazione" di un pathname. Pertanto .... contiene appunto solo un pathname e basta.

    Non ha senso che trasferisci un java.io.File (anche perché il path ha senso solo sul file-system dove c'è il file!). Devi proprio aprire il file, leggere (preferibilmente a blocchi di N byte per volta) il contenuto e inviarlo sul socket.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    e dalla parte del client? Costui deve ricevere i file, inviarli su una coda. Deduco che sono obbligato a predere i byte che mi arrivano dalla socket per poi farci un file nuovo dal lato client?o ci sono altre soluzioni? Perchè così facendo mi ritrovo il client pieno di file con non pochi problemi di memoria.

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lio.b
    Deduco che sono obbligato a predere i byte che mi arrivano dalla socket per poi farci un file nuovo dal lato client?
    Beh, certo, se vuoi trasferirlo!

    Originariamente inviato da lio.b
    Perchè così facendo mi ritrovo il client pieno di file con non pochi problemi di memoria.
    Problemi di memoria .... in che senso???
    Istanzi un array di tot byte, es. 1024, leggi dal socket a blocchi di byte, ogni blocco che ricevi lo scrivi su file.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    Nel senso che una volta che ho trasferito per ipotesi 20 file li spedisco su di una coda. Dopo che ho scritto un file sulla coda posso rimuoverlo? Perchè altrimenti dopo che il client usa questa applicazione per qualche settimana si troverebbe migliaia di foto sul pc. Quindi mi chiedevo, quando aggiungo un file nella coda mi conviene rimuovere tale file dal pc o sbaglio?

  6. #6
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    Dipende da cos'è questa "coda" dove vai a scrivere i file... è ovvio che se devi trasferire un file da server a client il cliente deve avere spazio su disco sufficiente per accogliere il file. Se devi trasferire 20 file, il client deve avere spazio sufficiente per accogliere 20 file. Quello che tu vai a fare dopo con quei file, non sono più problemi del Socket...


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  7. #7
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da lio.b
    Nel senso che una volta che ho trasferito per ipotesi 20 file li spedisco su di una coda.
    Ma coda di che cosa e per che cosa???!

    Originariamente inviato da lio.b
    Dopo che ho scritto un file sulla coda posso rimuoverlo?
    Senti .. posso anche non aver capito io cosa devi fare di preciso. Vuoi trasferire un file da una macchina ad un'altra con un "tuo" protocollo su socket??

    Dal lato "mittente", sicuramente: apri il file, leggi a blocchi di byte il contenuto, scrivi i blocchi di byte sul socket.

    Dal lato "destinatario": leggi dal socket i blocchi di byte e ..... ne fai quello che vuoi. Li scrivi su file, li analizzi solo, li mandi ad un'altra macchina o altro ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    312
    ok, grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.