Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    33

    [JAVA] Passaggio immagini attraverso socket

    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

  2. #2
    Nulla di particolare, dato un oggetto byte[] che rappresenta l'immagine lo schiaffi al socket.

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    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

  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    33

    Ok..

    Potreste gentilmente postarmi un pezzettino di codice che lo faccia?

    Vi ringrazio ragazzi, siete mitici !

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,304
    Ad esempio, dato che ImageIcon implementa già Serializable, potresti utilizzare quella classe per l'invio di immagini:
    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(); }
    Per quanto riguarda il Server che riceve l'immagine, esso si comporta così:
    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(); }
    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.
    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

  6. #6
    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?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.