Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Inviare un file tra 2pc attraverso internet

    Ciao, come da titolo, avrei la necessità di inviare un file da un pc A ed uno B situati in due zone diverse e collegati ad Internet.
    Lato client e server, quindi le due applicazioni, sono già sviluppate in toto, ma non so come far avvenire lo scambio...

    ciao

  2. #2
    Rileggendo mi accorgo di essere stato troppo superficiale. Quindi cercherò di essere piu dettagliato.

    Allora, devo realizzare un'applicazione java, che tra le altre cose deve essere in grado di ricevere, da altre applicazioni non locali, un file di tipo xml, tale file è serializzato.

    Quindi io mi chiedo, per poterlo lavorare, dovrei riceverlo con un Socket?? Ma io con un socket sono in grado di inviare un messaggio, non un file ed inoltre, è necessario deserializzarlo?? come??

    Inoltre, tale applicazione deve essere in grado di ricevere file da piu applicazioni, e non da una sola, quindi come li gestisco?

    Ciao e grazie

  3. #3
    Con le socket puoi far viaggiare byte.
    I file sono byte.
    I file xml serializzati sono anch'essi byte.
    quindi possono viaggiare attraverso le socket.

    Riguardo al fatto che un applicazione puo ricevere file da più applicazioni lì devi far uso dei thread.

    Riguardo la deserializzazione, bisogna capire che genere di api usi per l'xml e relativa serializzazione.

  4. #4
    Ok, diciamo che sono riuscito ad instaurare una connessione tra un server e piu client, anche se mi chiedo: per poter avvenire la connessione dei client al server, i client devono conoscere sia l'indirizzo IP che la porta virtuale?? E poi la porta può essere uguale per tutti oppure ogni client ne deve avere una (se cosi come le gestisco?).

    Inoltre ho realizzato questo:



    byte [] buffer = new byte [filesize];
    InputStream is = client.getInputStream();
    FileOutputStream fos = new FileOutputStream("source-copy.pdf");
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    byteDaLeggere = is.read(buffer,0,buffer.length);
    byteLetti = byteDaLeggere;
    do {
    byteDaLeggere = is.read(buffer, byteLetti, (buffer.length-byteLetti));
    if(byteDaLeggere >= 0) byteLetti += byteDaLeggere;
    } while(byteDaLeggere > -1);



    però, in questo modo dovrei conoscere a priori la dimensione del file che sto per ricevere, ma come faccio?? non è possibile fare qualcosa senza conoscerne la dimensione a priori??

  5. #5
    Le porte possono essere uguali per ogni client.

    Se non conosci la dimensione usa il ByteArrayOutputStream

    Leggi i dati dall'input stream finchè lo stream non restituisce -1,
    Ciascun intero letto lo scrivi sul ByteArrayOutputStream.
    alla fine utilizzando il metodo .toByteArray() converti i dati raccolti in un array di byte (byte[])

  6. #6
    Perdonami ma potresti mostrarmi come usare questa procedura??

    Inoltre prima mi dicevi che per la deserializzazione dipende da cosa uso... quin credo proprio che nasce un problema allora!!!

    Ti spiego meglio, il lato server, questo che riceve il file lo sto sviluppando io in java e per l'xml sto utilizzando jdom, ma per quanto riguarda i client, essi sono realizzati in c# da un'altra persona e non so come gestisce l'xml... si può ovviare in qualche modo o ho capito totalmente un'altra cosa?? nel senso che posso serializzare i dati con un qualcosa di valido per c# e poi deserializzarli con jdom per java.

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.