Ho questo server:
il problema è questo il client invia 40 e poi giustamente il server riceve 2 double che li stampa con una System.out.println()codice:public class Server { private static int port=2000; private static int T=0; private Socket client; private DataInputStream input; private DataOutputStream output; private String idFile="2000"; private boolean isDigit(String n) throws NumberFormatException{ try{ Integer.parseInt(n); return true; }catch(NumberFormatException nfe){ return false; } } public Server(int port){ this.port=port; } private void Autenticate(){ SecurityService s=new SecurityService(); try{ int c=input.readInt(); System.out.println("idship= "+c); boolean risposta=s.login(c); if (risposta){ System.out.println("OK autenticazione riuscita"); output.writeUTF("ACK"); } else output.writeUTF("NAK"); output.flush(); }catch(IOException ioex){ System.err.println(ioex.getMessage()); } } public void Start() throws IOException { int c=-1; try{ System.out.println ("Server in partenza sulla porta " + port); ServerSocket server = new ServerSocket(port); System.out.println ("Server partito sulla porta " + server.getLocalPort() ) ; while(true){ System.out.println ("In attesa di connessioni..."); client = server.accept (); System.out.println ("Richiesta di connessione da " + client.getInetAddress ()); input =new DataInputStream(new BufferedInputStream (client.getInputStream())); output = new DataOutputStream( new BufferedOutputStream(client.getOutputStream())); do{ try{ c=input.readInt(); switch(c){ case 10: output.writeUTF("OK"); output.flush(); Autenticate(); case 30: System.out.println("Client terminate"); client=null; case 40: double lat=input.readDouble(); System.out.println(lat); double lon=input.readDouble(); System.out.println(lon); case 50: System.out.println("File inviato"); default: ; } }catch(IOException ioex){ System.err.println(ioex.getMessage()); } }while(!(c==30)); input.close(); output.close(); } } catch(EOFException ex){ System.out.println("Client ha terminato la connessione"); }catch(IOException ioe){ System.err.println(ioe.getMessage()); } } }
il fatto strano è che dopo aver stampato i due double stampa anche la stringa "File inviato" che dovrebbe scrivere invece quando riceve 50.Perchè?
ecco cosa stampa
Server in partenza sulla porta 2000
Server partito sulla porta 2000
In attesa di connessioni...
Richiesta di connessione da /127.0.0.1
idship= 11
11
OK autenticazione riuscita
Client terminate
8.54125290036E-313
1.7720935413722294E174
File inviato
39.848953402657074
16.925433180931204
File inviato
39.208805556246155
16.447228466132938
File inviato
38.460536806432735
16.727519194792468
File inviato
38.29210199097713
17.508607363607148
File inviato
38.85835930243228
18.072364112341404
File inviato
39.6386943800757
17.900474086106414
File inviato
39.91567075222162
17.150972182311154
File inviato
39.43463761966107
16.51294699479987
File inviato
38.63785462607226
16.572995938566528
File inviato
38.25788038120771
17.275910291641956
File inviato
38.64406145345488
17.97543383946423
File inviato
39.44134474595498
18.028427858183672
File inviato
39.9167116764437
17.38616989138407
File inviato
39.63311208129664
16.63914895181661
File inviato
38.851286120405454
16.474172646256044
File inviato
38.29004097663836
17.042919429207547
File inviato
38.46538284686022
17.822486131335676
File inviato
39.21610322421954
18.096142721859874
File inviato
39.85199325589654
17.612290593484218
File inviato
39.78841857932453
16.815781161638874
File inviato
39.08382945895416
16.438921524671002
File inviato
Client terminate
8.54125062346E-313
3.66562523587626E-105
File inviato
tulipan

Rispondi quotando


