Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    561

    problema con un client server

    Dunque ho un'applicazione client server fatta con i socket.
    Il mio problema è questo:

    Ogni secondo il client invia in automatico al server due double però poichè il client ha un'interfaccia grafica il client può anche inviare al server degli interi seguiti da delle stringhe.
    Io non so come gestirli sul server. Il server che ho fatto è questo:

    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;
                      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());
             }
      }
    }
    tulipan

  2. #2
    Utente di HTML.it
    Registrato dal
    Jan 2007
    Messaggi
    561
    il mio problema è :

    il server aspetta sempre un intero all'istruzione c=input.readInt() nel do while perchè il client può mandare dei comandi ma in realtà ogni T secondi arrivano dei double .....quindi come fa a funzionare?

    tulipan

  3. #3
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: problema con un client server

    Originariamente inviato da tulipan
    Ogni secondo il client invia in automatico al server due double però poichè il client ha un'interfaccia grafica il client può anche inviare al server degli interi seguiti da delle stringhe.
    Io non so come gestirli sul server.
    In che senso??? Sei tu che devi studiare e implementare un "protocollo" di comunicazione tale per cui le due parti siano in grado di ricevere e capire le varie richieste/risposte possibili!

    In genere si deve prima stabilire come devono essere composte le richieste/risposte, se sono tutti dati binari o dati testuali, ad esempio a "righe".
    Per fare un esempio: il server deve poter ricevere dei dati binari di tipo int (readInt) o double (readDouble). È chiaro che il server deve poter sapere cosa aspettarsi. Si potrebbe pensare di inviare prima del dato un byte di "marcatura" che indica il tipo, es. 01h per int e 02h per double.

    Cose del genere ... ma sei tu che devi stabilirlo.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.