Ciao ragazzi sono nuovo del forum e questo è il mio primo post aperto, sono certo che troverò in voi validi suggerimenti per imparare qualcosa in più sulla programmazione.
il mio problema è il seguente: ho scritto (utilizzando eclipse) due classi una client e l'altra server per provare una prima forma di comunicazione. Se lancio le due classi da terminale sulla stessa macchina non ho alcun tipo di problema e i messaggi vengono ricevuti e inviati normalmente. Quando però o provato a lanciare il server su una macchina connessa ad internet e il client sul mio portatile non sono riuscito a raggiungere il server, ricevendo un timeout. Faccio notare che il client quando si avvia richiede l'indirizzo del server al quale collegarsi. Quando sto in locale metto 127.0.0.1 quando ho provato in internet invece metto l'indirizzo ip della macchina su cui ho lanciato il server.
Di seguito vi riporto i codici delle due classi :
Il Server è :
Il client invece :codice:public class Server { private ServerSocket server; private Socket connessione; private BufferedReader dalClient; private PrintStream alClient; private String name; public static void main(String[] args) { Server s = new Server("Server"); s.conversazione(); } public Server(String name) { this.name = name; try { server = new ServerSocket(4000); System.out.println("Server attivo"); connessione = server.accept(); dalClient = new BufferedReader(new InputStreamReader(connessione.getInputStream())); alClient = new PrintStream(connessione.getOutputStream()); } catch(IOException e) { System.out.println(e); } } // Server() public void conversazione() { String messaggio = ""; BufferedReader t = new BufferedReader(new InputStreamReader(System.in)); try { alClient.println("Connesso al server!"); while(!messaggio.equals("/logout")) { messaggio = dalClient.readLine(); System.out.println(messaggio); if(!messaggio.equals("/logout")) { messaggio = t.readLine(); alClient.println(name+" scrive: "+messaggio); } } // while } catch(IOException e) { System.out.println("Conversazione interrotta"); } } // conversazione() }
codice:public class Client { private Socket connessione; private BufferedReader dalServer; private PrintStream alServer; private String name; public static void main(String[] args) { Client c = new Client(args[0]); c.conversazione(); } public Client(String name) { this.name = name; BufferedReader t = new BufferedReader(new InputStreamReader(System.in)); try { System.out.println("Inserire indirizzo server: "); String indirizzo = t.readLine(); connessione = new Socket( indirizzo , 80); dalServer = new BufferedReader(new InputStreamReader(connessione.getInputStream())); alServer = new PrintStream(connessione.getOutputStream()); } catch(IOException e) { System.out.println(e); } } // Client() public void conversazione() { String messaggio = ""; BufferedReader t = new BufferedReader(new InputStreamReader(System.in)); try { while(!messaggio.equals("quit")) { messaggio = dalServer.readLine(); System.out.println(messaggio); if(!messaggio.equals("/logout")) { messaggio = t.readLine(); alServer.println(name+" scrive: "+messaggio); } } // while connessione.close(); } catch(IOException e) { System.out.println("Conversazione interrotta"); } } // conversazione() }

Rispondi quotando