Salve a tutti ragazzi. devo creare un Server ed un Clinet utilizzando le Socket in java.
Allora il client si connette ad un numero di porta su cui è in attesa il server, il numero di porta lo decido io arbitrariamente.
Quando il client si connette il server gli manda un messaggio di benvenuto e fin quin nessun problema, tutto liscio come l'olio
Ora però non riesco più ad andare avanti poichè la traccia mi chiede che i due(Client e Server) comunichino
Mi spiego meglio, Dopo il messaggio di benvenuto il Server tramite un input da tastiera invia una stranga al client e il clien la visualizza
ES: (dopo essersi connesso il server tramite l'input da tastiera scirve "Ciao come stai" e il client la deve visualizzare.)
Sembra semplice ma non ci rieco. Vi posto anche il codice del client e del server
spero mi possiate dare un aiuto....
CODICE SERVER:
codice:import java.io.*; import java.net.*; public class Server extends Thread{ PrintStream PrintStr = null; private ServerSocket Server; public static void main(String[] args) throws Exception { new Server(); } public Server() throws Exception { Server = new ServerSocket(4331); System.out.println("Il server è in attesa sulla porta 4321"); this.start(); } public void run(){ while(true) { try{ System.out.println("In attesa di connessione..."); Socket client = Server.accept(); System.out.println("Connessione accettata da: " + client.getInetAddress()); // Connect c = new Connect(client); OutputStream slout = client.getOutputStream(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(slout)); bw.write("Benvenuto sul server"); bw.write("Ora sei connesso sul server!\n"); // InvioMessaggioClient() throws IOException{ String InputLine = null; System.out.println("\nInvia il messaggio:\n"); /*Per prendere un input da tastiera */ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); InputLine = br.readLine(); PrintStr.println(InputLine); } catch(Exception e){} } } } class Connect extends Thread{ private Socket client = null; BufferedReader in = null; PrintStream out = null; public Connect(){} public Connect(Socket clientSocket){ client = clientSocket; try { in = new BufferedReader(new InputStreamReader(client.getInputStream())); out = new PrintStream(client.getOutputStream(), true); } catch(Exception e1) { try{ client.close();} catch(Exception e) { System.out.println(e.getMessage());} return; } //this.start(); } public void run() { try { out.println("Generico messagio per il clinet"); out.flush(); //chiude gli stream e le connessioni out.close(); in.close(); client.close(); } catch(Exception e){} } } </script>
CODICE CLIENT:
codice:import java.io.*; import java.net.*; import java.util.*; public class Client{ public static void main(String[] args){ BufferedReader in = null; PrintStream out = null; Socket socket = null; String message; try { //apertura di una soket di connessione socket = new Socket("localhost", 4331); //Apre i canali di I/O in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintStream(socket.getOutputStream(),true); //legge dal server message = in.readLine(); System.out.println("Messaggio ricevuto dal server: "+ message); out.close(); in.close(); } catch(Exception e){ System.out.println(e.getMessage()); } } }
PS: da premettere una cosa. Qunado compilo prima il server e poi il clinet diciamo che il tutto funziona nel senso che Il server mi chiede di inserire il messaggio da tastiera ma il Client non lo riceve o non lo visualizza
Aiutatemi per favore



Rispondi quotando
VVoVe: Non me ne ero neppure accorto!!!
