Ciao a tutti,
ho provato a realizzare queste due classi prendendo spunto da una guida su questo sito:
codice:import java.net.*; import java.io.*; public class Server{ private int port; private ServerSocket server; public Server (int port){ this.port = port; if(!startServer()) System.err.println("Errore durante la creazione del Server"); } private boolean startServer(){ try{ server = new ServerSocket(port); }catch (IOException ex){ ex.printStackTrace(); return false; } System.out.println("Server creato con successo!"); return true; } public void runServer(){ while (true){ try{ // Il server resta in attesa di una richiesta System.out.println("Server in attesa di richieste..."); Socket socket = server.accept(); System.out.println("Un client si e' connesso..."); OutputStream outputStream = socket.getOutputStream(); BufferedWriter toClient = new BufferedWriter(new OutputStreamWriter(outputStream)); System.out.println("mando messaggio al client"); toClient.write("Benvenuto sul server!\n"); InputStream inputStream = socket.getInputStream(); BufferedReader fromClient = new BufferedReader(new InputStreamReader(inputStream)); System.out.println("Attendo messaggio dal client"); System.out.println("Il client dice: " + fromClient.readLine()); toClient.close(); fromClient.close(); socket.close(); System.out.println("Chiusura connessione effettuata\n"); }catch (IOException ex){ ex.printStackTrace(); } } } public static void main (String args[]){ // Crea un oggetto di tipo Server in ascolto // sulla porta 7777 Server ss = new Server(7777); ss.runServer(); } }Se avvio il server ed il client entrambi si fermano nel punto in cui attendono un messaggio dall'input stream. Quindi il server si ferma nel punto in cui attende un messaggio dal client e viceversa.codice:import java.net.*; import java.io.*; public class Client{ public static void main(String args[]){ try{ System.out.println("Apertura connessione..."); Socket socket = new Socket ("127.0.0.1", 7777); InputStream inputStream = socket.getInputStream(); BufferedReader fromServer = new BufferedReader(new InputStreamReader(inputStream)); System.out.println("Attendo messaggio dal server"); System.out.println("Risposta del server: " + fromServer.readLine()); OutputStream outputStream = socket.getOutputStream(); BufferedWriter toServer = new BufferedWriter(new OutputStreamWriter(outputStream)); System.out.println("Mando messaggio al server"); toServer.write("ciao dal client\n"); fromServer.close(); toServer.close(); socket.close(); System.out.println("Chiusura connessione effettuata"); }catch (ConnectException connExc){ System.err.println("Errore nella connessione "); }catch (IOException ex){ ex.printStackTrace(); } } }
Se invece creo un solo canale di output nel server ed uno di input nel client funziona perfettamente, nel senso che il messaggio "Benvenuto sul Server!" viene inviato correttamente al client.
Come mai se creo entrambi i canali di input ed output non funziona?

Rispondi quotando