Ciao a tutti ragazzi. Spero mi riusciate ad aiutare, sto impazzendo da giorni!
Devo fare un applicazione client server un po' complessa ma ho un grosso problema.
Ho realizzato un piccolo client che fa domande ad un server che prontamente risponde.
Il problema sta nel fatto che sono riuscito a far comunicare le due applicazioni una riga per volta.
cioè il client invia una richiesta su una riga e il server risponde su una riga.
Io vorrei, però che il server rispondesse su più righe.
Esempio
situazione odierna
Client:
Come ti chiami?
Server:
Mi chiamo server 123
Quello che vorrei
Client
come ti chiami?
Server
Mi chiamo 123
Ti piace il mio nome?
L'ho fatta veramente spicciola...
posto il codice del client e server come lo realizzato io...
Mi sa che dovrei lavorare sui byte ma non riesco a capire proprio
Aspetto voi
Client
codice:import java.net.*; import java.io.*; public class Client { public static void main(String[] args) throws IOException { Socket Socket = null; PrintWriter out = null; BufferedReader in = null; try { Socket = new Socket("localhost", 4444); out = new PrintWriter(Socket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(Socket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Non conoscol'host."); System.exit(1); } catch (IOException e) { System.err.println("Errore"); System.exit(1); } BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in)); String fromServer; String fromUser; while ((fromServer = in.readLine()) != null) { System.out.println("Server: " + fromServer); if (fromServer.equals("Bye.")) break; fromUser = stdIn.readLine(); if (fromUser != null) { System.out.println("Client: " + fromUser); out.println(fromUser); } } out.close(); in.close(); stdIn.close(); Socket.close(); } }
Server
codice:import java.net.*; import java.io.*; public class Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(4444); } catch (IOException e) { System.err.println("Porta occupata"); System.exit(1); } Socket clientSocket = null; try { clientSocket = serverSocket.accept(); } catch (IOException e) { System.err.println("Non accettato."); System.exit(1); } PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true); BufferedReader in = new BufferedReader( new InputStreamReader( clientSocket.getInputStream())); String inputLine, outputLine; outputLine = "Server avviato!!! e Sei connesso"; out.println(outputLine); while ((inputLine = in.readLine()) != null) { if (inputLine.equals("PROVA")) outputLine="prova andata a buon fine"; else if (inputLine.equals("OK")) outputLine="ok ok"; else if (inputLine.equals("fine")) outputLine="Bye."; out.println(outputLine); if (outputLine.equals("Bye.")) break; } out.close(); in.close(); clientSocket.close(); serverSocket.close(); } }

Rispondi quotando
