Ciao a tutti.
E' tutto il giorno che cerco di far passare nella mia applicazione dal client al server e viceversa una immagine, ma non ci riesco.
Avete qualche piccolo pezzo di codice da mostrarmi per aiutarmi?
Grazie mille in anticipo.
Albert
Ciao a tutti.
E' tutto il giorno che cerco di far passare nella mia applicazione dal client al server e viceversa una immagine, ma non ci riesco.
Avete qualche piccolo pezzo di codice da mostrarmi per aiutarmi?
Grazie mille in anticipo.
Albert
Nulla di particolare, dato un oggetto byte[] che rappresenta l'immagine lo schiaffi al socket.
Potresti anche utilizzare gli ObjectOutputStream e ObjectInputStream per serializzare attraverso la Socket una tua classe che rappresenta l'immagine.
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
Potreste gentilmente postarmi un pezzettino di codice che lo faccia?
Vi ringrazio ragazzi, siete mitici !
Ad esempio, dato che ImageIcon implementa già Serializable, potresti utilizzare quella classe per l'invio di immagini:
Per quanto riguarda il Server che riceve l'immagine, esso si comporta così:codice:// Parte riguardante il client: ImageIcon ic = new ImageIcon( "fileImmagine" ); try { Socket s = new Socket( IP, porta ); // Mi connetto al server // Ottengo un ObjectOutputStream dall'OutputStream della socket ObjectOutputStream oos = new ObjectOutputStream( s.getOutputStream() ); // Invio l'immagine al server oos.writeObject( ic ); oos.flush(); } catch (Exception e) { e.printStackTrace(); }
Io ti ho postato ciò che grossomodo succede nella comunicazione fra client e server... per l'inverso è tutto identico, basta invertire il soggetto mittente con quello destinatario.codice:try { // Parte del server che riceve l'immagine ServerSocket ss = new ServerSocket( porta ); Socket client = ss.accept(); // Accetto la connessione del client // Ottengo l'ObjectInputStream dall'InputStream della socket ObjectInputStream ois = new ObjectInputStream( client.getInputStream() ); // Ricevo l'immagine ImageIcon ic = (ImageIcon) ois.readObject(); // Ci faccio quello che voglio elaboraImmagine( ic ); } catch (Exception e) { e.printStackTrace(); }
Il codice che ti ho postato deve servirti da esempio: ottimizzalo tu, secondo le tue esigienze e inseriscilo all'interno delle tue classi dove opportuno.
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
Ottima soluzione. Ho avuto lo stesso problema ma il mio caso è leggermente diverso.
Esiste un servlet che invia una serie di immagini al client. In alcuni casi tra un'immagine e l'altra potrebbero passare alcuni secondi. Come posso fare in modo che il canale tra il client ed il server rimanga aperto e che non accada l'eccezione
java.io EOFException?