Salve amici sto riscontrando un problema nella realizzazione di questo semplice programma
Client:
codice:importjava.io.BufferedReader;import java.io.InputStreamReader; import java.io.IOException; import java.io.PrintStream; import java.io.PrintWriter; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; class ClientTCP { public static void main (String[] args) throws IOException { String msg, msg2; final int YOU = 0; final int PEER = 1; final int EXIT = 2; int status = YOU; //long off; Socket clientSocket = new Socket("127.0.0.1", 6789); Scanner scriveClient = new Scanner(System.in); Scanner leggeServer = new Scanner (clientSocket.getInputStream()); PrintStream outToServer = new PrintStream(clientSocket.getOutputStream()); while(status != EXIT) { switch(status) { case YOU: // client scrive System.out.print("YOU> "); msg = scriveClient.nextLine(); // fa un controllo sul msg, se c'è il punto il client si deve disconnettere CharSequence cs = "."; if(msg.contains(cs)) { status = EXIT; break; } outToServer.println(msg); // ilmessaggiovienemandatoal server status = PEER; break; case PEER: // client legge msg2 = leggeServer.nextLine(); System.out.println("PEER> " + msg2); status = YOU; break; } } System.out.println("Il server si è disconnesso!!!!!"); clientSocket.close(); } }
Server:
Il problema che sto riscontrando è il seguente: il client nel momento in cui digita il . sta dicendo che vuole disconnettersi dal server, pertanto al server deve arrivare un messaggio del tipo "Il client si è disconnesso" e deve cessare la comunicazione.La stessa cosa la dovrò implementare anche per il server e così via.Per il momento ho implementato questo codice dal lato clientcodice:import java.net.ServerSocket;import java.net.Socket; import java.util.Scanner; import java.io.IOException; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintStream; class ServerTCP { public static void main (String[] args) throws IOException { String msg, msg2; final int YOU = 0; final int PEER = 1; final int EXIT = 2; int status = PEER; String c; String c2; ServerSocket welcomeSocket = new ServerSocket(6789); Scanner scriveServer = new Scanner(System.in); Socket connectionSocket = welcomeSocket.accept(); Scanner leggiClient = new Scanner(connectionSocket.getInputStream()); PrintStream outToClient = new PrintStream(connectionSocket.getOutputStream()); while(status != EXIT) { switch(status) { case YOU: // server scrive System.out.print("You> "); msg = scriveServer.nextLine(); outToClient.println(msg); status = PEER; break; case PEER: // server legge msg2 = leggiClient.nextLine(); System.out.println("Peer> " + msg2); status = YOU; break; } } System.out.println("Il client si è disconnesso!!!!"); // connectionSocket.close(); // e chiudo la connessione } }
però quando digito il punto mi solleva questa eccezione:codice:CharSequence cs = "."; if(msg.contains(cs)) { status = EXIT; break; }
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1516)
at es3_5modificato.ServerTCP.main(ServerTCP.java:43)
Qualche consiglio pervafore??

Rispondi quotando

