Salve a tutti!
Devo far scambiare oggetti tra un client e un server ma non mi funziona e non riesco a capire perchè. quando li avvio, non mi danno errori, nè eccezioni; la connessione si instaura ma non avviene lo scambio di messaggi quindi sia l'uno che l'altro restano in un'attesa infinita. GRAZIE A QUANTI MI AIUTERANNO!
L'oggetto che si dovrebbero scambiare è di tipo Message:
Ecco il codice di server e client:codice:package clientserver; import java.io.Serializable; /** * * @author Rosa Linda */ public class Message implements Serializable{ private String mittente; private String ricevente; private int porta; Message(String mittente, String ricevente, int porta){ this.mittente=mittente; this.ricevente=ricevente; this.porta=porta; } public String getMittente(){ return this.mittente; } public String getRicevente(){ return this.ricevente; } public int getPorta(){ return this.porta; } }
codice:import java.io.*; import java.net.*; import java.util.*; /** * * @author Rosa Linda */ public class Server extends Thread{ private ServerSocket Server; public static void main(String[] args) throws Exception{ new Server(); } public Server() throws Exception{ this.Server=new ServerSocket(4000); System.out.println("Il server è in ascolto sulla porta 4000"); this.start(); } @Override public void run(){ while(true){ try{ System.out.println("In attesa di connesione"); Socket client=Server.accept(); System.out.println("Connessione accettata da "+client.getInetAddress()); Connect c=new Connect(client); }catch(Exception e){ } } } } class Connect extends Thread implements Serializable{ private Socket client=null; ObjectOutputStream oos=null; ObjectInputStream ois=null; public Connect(){ } public Connect(Socket clientSocket){ this.client=clientSocket; try{ //IL PROBLEMA E' QUI SECONDO ME ois=new ObjectInputStream(client.getInputStream()); oos=new ObjectOutputStream(client.getOutputStream()); }catch(Exception e){ try{ System.out.println("Il client si è disconnesso"); client.close(); }catch(Exception ee){ System.out.println(ee.getMessage()); } return; } this.start(); } @Override public void run(){ try{ Message message=new Message("Server","Client",4000); oos.writeObject(message); oos.flush(); oos.close(); ois.close(); client.close(); }catch(Exception e){ System.out.println(e.getMessage()); } } }codice:import java.io.*; import java.net.*; /** * * @author Rosa Linda */ public class Client implements Serializable{ public static void main(String[] args){ ObjectOutputStream oos=null; ObjectInputStream ois=null; Socket socket=null; Message message; try{ socket=new Socket("localhost",4000); ois=new ObjectInputStream(socket.getInputStream()); oos=new ObjectOutputStream(socket.getOutputStream()); message=(Message)ois.readObject(); System.out.println("Messaggio ricevuto da: "+message.getMittente()+" per "+message.getRicevente()+"\nConnessione avvenuta sulla porta "+message.getPorta()); oos.close(); ois.close(); }catch(Exception e){ System.out.println(e.getMessage()); } } }

Rispondi quotando

