Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [JAVA] - Client/Server Problemi di connessione e comunicazione

    Ciao ragazzi,
    vi prego di aiutarmi perchè sono nel pallone.Ho creato 2 programmi, un client ed un server.
    Il Client è un cronometro che è scritto in modo da poter registrare in futuro la data, l'identità dell'utente loggato il tempo di connessione su di un file esterno, txt o excel. il cronometro deve partire solo se la login inserita è corretta.
    Il server, controlla i dati di login inviatagli dal client, e in caso affermativo risponde con un flag, che autorizza il client a far partire il cronometro, in caso contrario invia un flag per segnalare l'errore di login.

    quando provavo l'algoritmo da cmd senza interfaccia grafica i due programmi andavano bene e comunicavano, ma ora che ho cominciato ad implementarci intorno una GUI swing stanno facendo delle cose pazze e non funzionano bene più, specie nelle comunicazioni di scrittura e lettura fra client e server.

    vi prego aiutatemi è molto importante per lavoro
    :-(

    ecco le mie classi

    P.S. scusate se il codice è sporchissimo di commenti e altri comandi superflui per le prove passate!!!



    --- PROJECT CLIENT ----

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Date;
    
    
    public class Cronometro{
        private JFrame frame;
        private JLabel labelTime;
        private JPanel panelButtons;
        private JButton buttonLogin;
        private JButton buttonLogout;
    	JTextField username = new JTextField(15);
    	JTextField password = new JTextField(15);
    	JTextField telefono = new JTextField(6);
    	JLabel status = new JLabel("Server Disconnesso");
    	JLabel empty = new JLabel();
    	JLabel title = new JLabel ("LudecaLog-In");
    	JLabel nameLabel = new JLabel ("Nome Utente: ");
    	JLabel passLabel = new JLabel ("Password: ");
    	JLabel telLabel = new JLabel ("Telefono: ");
        private Timer timer;
        private long startTime;
        
        String rigaTesto;
       // DataInputStream in;
        BufferedReader in ;
        DataOutputStream  out;
        Socket clientSocket;
    
        public Cronometro ()
        {
    
    		
            frame = new JFrame ("Cronometro");
            frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
            frame.setSize (500, 500);
    
            labelTime = new JLabel ("0:00:00.0");
            labelTime.setFont (new Font ("SansSerif", Font.BOLD, 30));
            labelTime.setHorizontalAlignment (JLabel.CENTER);
    
            buttonLogin = new JButton ("START");
            buttonLogout = new JButton ("STOP");
            buttonLogout.setEnabled (false);
    
    		title.setForeground(Color.blue);
    		title.setHorizontalAlignment(JLabel.CENTER);
    		Font titleFont = new Font("Title", Font.CENTER_BASELINE, 50);
    		title.setFont(titleFont);
    		
    		GridBagConstraints constr = new GridBagConstraints();
    	
            panelButtons = new JPanel (new GridBagLayout());
            
            constr.gridx=0;
    		constr.gridy=2;
    		panelButtons.add(nameLabel,constr);
            constr.gridx=1;
    		constr.gridy=2;
    		panelButtons.add(username,constr);
    		constr.gridx=0;
    		constr.gridy=4;
    		panelButtons.add(passLabel,constr);
    		constr.gridx=1;
    		constr.gridy=4;
    		panelButtons.add(password,constr);
    		constr.gridx=0;
    		constr.gridy=5;
    		panelButtons.add(telLabel,constr);
    		constr.gridx=1;
    		constr.gridy=5;
    		telefono.setHorizontalAlignment(JLabel.LEFT);
    		panelButtons.add(telefono,constr);
    		constr.gridx=1;
    		constr.gridy=8;
    		panelButtons.add(empty,constr);
    		constr.gridx=1;
    		constr.gridy=9;
    		panelButtons.add(status,constr);
    		constr.gridx=0;
    		constr.gridy=10;
            panelButtons.add (buttonLogin,constr);
    	    constr.gridx=2;
    		constr.gridy=10;
    	    panelButtons.add (buttonLogout,constr);
    		frame.setVisible(true);
    		frame.add(title,BorderLayout.NORTH);
            frame.add (labelTime, BorderLayout.CENTER);
            frame.add (panelButtons, BorderLayout.SOUTH);
           
    
            timer = new Timer (50, new ActionListener () {
                public void actionPerformed (ActionEvent e) {
                    long diffTime = System.currentTimeMillis () - startTime;
    
                    int decSeconds = (int) (diffTime % 1000 / 100);
                    int seconds = (int) (diffTime / 1000 % 60);
                    int minutes = (int) (diffTime / 60000 % 60);
                    int hours = (int) (diffTime / 3600000);
    
                    String s = String.format ("%d:%02d:%02d.%d", hours, minutes,
                                              seconds, decSeconds);
    
                    labelTime.setText(s);
     
                }
            });
    
    
    
            buttonLogin.addActionListener (new ActionListener () 
            {
                public void actionPerformed (ActionEvent e)
                {
            
                /***************** 1 CONNESSIONE AL SERVER *******/
            	           try {
            	        	   clientSocket = new Socket("192.168.42.176",9910);
            	        	   System.out.println("Connessione al Server in atto..."); 
            	        	  
            	        	   String loginOperatore = new String() ;
            	        	   
            	        			  loginOperatore=(username.getText()+password.getText()+telefono.getText());
            	        	   
            	        	   //apertura stream di input
            	               InputStreamReader isr=new InputStreamReader(clientSocket.getInputStream());
            	               BufferedReader in=new BufferedReader(isr);
            	               
            	               //apertura stream di output
            	               OutputStreamWriter osw=new OutputStreamWriter(clientSocket.getOutputStream());
            	               BufferedWriter bw=new BufferedWriter(osw);
            	               PrintWriter out=new PrintWriter(bw,true);
            	               
            	               //invio della stringa al server
            	               out.println(loginOperatore.toString());
            	               status.setText("Connesso al Server, controllo la Login");
            	               
            	               
            	               String confermaLogin = new String();
            	               System.out.println(confermaLogin=in.readLine());
            	               System.out.println("ciao----->"+(confermaLogin));
            	               if(confermaLogin.equals("OK"))
            	               {
            	            	   //if (clientSocket != null && out != null && in != null) {
        					            Tempo tempo = new Tempo();
    			        				final Date data = tempo.dataCompleta;
    			        				startTime = System.currentTimeMillis();
    			        	            timer.start();
    			        	            buttonLogin.setEnabled(false);
    			        	            buttonLogout.setEnabled(true);        	            
    			        				status.setText("<html>Log In Effettuato con Successo! 
    Data e Ora:
    "+ data+"</html>");
    								       		
    					       // }	 
            	               }
            	               else if (confermaLogin.equals("DATI_ERRATI"))
            	               {
            	            	   status.setText("ERRORE!!! Dati di Log-In Errata!!");
             	            	   
            	               }
            	               
            	              
            	    
            	               //chiusura della socket e degli stream
            	               clientSocket.close();
            	               in.close();
            	               bw.close();
            	               out.close();		     				         
    						   
    					  	  } 
            	           catch (UnknownHostException err) 
    					  	  {
    					            System.err.println("Errore: probelmi di comunicazione");
    					        } 
            	           catch (IOException err1)
            	           {
    					            System.err.println("Errore: probelmi di comunicazione");
    					        }
                 
            	           /******************************** 1 FINE CONNESSIONE AL SERVER *******/
                }
            });
    
            buttonLogout.addActionListener (new ActionListener () {
                public void actionPerformed (ActionEvent e) 
                {
                        timer.stop ();
                        buttonLogin.setEnabled (true);
                        buttonLogout.setEnabled (false);
                		Tempo tempo = new Tempo();
                		final Date data = tempo.dataCompleta;
                		status.setText("<html>Log Out Effettuato con Successo! 
    Data e Ora:
    "+ data+"</html>");
                		
                }
            });
            
            frame.setVisible (true);
        }
        
        
    
        public static void main (String[] args)
        {
        	SwingUtilities.invokeLater (new Runnable() 
        					           {
        		                        public void run() 
        		                        {
                							new Cronometro();
                						}
        							   });
        }
    }
    codice:
    import java.util.Calendar;
    import java.util.Date;
    import java.util.GregorianCalendar;
    
    
    public class Tempo{
    		    public int ore,minuti,secondi,giorno,mese,anno;
    		    public long dataMillis;
    		    public Date dataCompleta = new Date();
    
    		   //costruttore di default
    		   public Tempo(){		    
    
    			  GregorianCalendar c =new GregorianCalendar();
    			  dataCompleta=c.getTime();
    			  dataMillis=c.getTimeInMillis()/* / (24*60*60*1000)*/;
    		      ore=c.get(Calendar.HOUR_OF_DAY);
    		      minuti=c.get(Calendar.MINUTE);
    		      secondi=c.get(Calendar.SECOND);
    		      giorno=c.get(Calendar.DAY_OF_MONTH);
    		      mese=c.get(Calendar.MONTH);
    		      anno=c.get(Calendar.YEAR);
    
    		      
    		   }//Tempo
    	}//tempo

  2. #2

    ECCO IL LATO SERVER!!

    ECCO LE CLASSI DEL LATO SERVER

    --- LATO SERVER ---


    --- LATO SERVER ---

    codice:
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.net.UnknownHostException;
    import java.util.Date;
    
    
    public class provaServer{
    	
        private JFrame frame;
        private JPanel panelButtons;
        private JPanel panelSchermiTitolo;
          
        private JButton buttonConnetti;
        private JButton buttonDisconnetti;
        private JButton buttonSalvaFile;
        private JButton buttonAggiornaSchermi;
        private JButton buttonCreaLogin;
        private TextArea schermoOperatori;
        private TextArea schermoNotifiche;
        
    	JTextField username = new JTextField(15);
    	JTextField password = new JTextField(15);
    	JTextField telefono = new JTextField(6);
    	 JLabel status = new JLabel("Server Disconnesso");
    	JLabel empty = new JLabel();
    	JLabel title = new JLabel ("LudecaLog-In Server");
    
        
        String rigaTesto;
       // DataInputStream in;
        BufferedReader in ;
        DataOutputStream  out;
    
    
    	 
     
    
        public provaServer ()
        {
      
    
         try {
             Socket clientSocket=null;
        	 ServerSocket serverSocket=null;
                serverSocket = new ServerSocket(9910);
                clientSocket = serverSocket.accept(); 
                System.out.println("Server: Sono attivo sulla Rete ");
                //serverSocket.setReuseAddress(true);
                                  
                status.setText("Il Server è adesso Attivo sulla Rete");
                
                BufferedReader in= new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                //Stream di output
                DataOutputStream out=new DataOutputStream(clientSocket.getOutputStream());
                String loginOperatore = new String();
                loginOperatore=in.readLine();
                System.out.println("cronServer:---->"+loginOperatore);
                Operatore operatore = new Operatore();
                if(operatore.controllaLogin(loginOperatore)==true)
                {
                	out.writeBytes("OK");
                }
                else
                {
                	out.writeBytes("DATI_ERRATI");
                }
                
                System.out.println("Server: Sono attivo sulla Rete ");
                serverSocket.setReuseAddress(true);                
                status.setText("Il Server è adesso Attivo sulla Rete");
            
             }
             catch (IOException e1) {
                System.out.println(e1);
                System.out.println("Server: Non riesco ad aprire il socket");
             } 
        	
    
            
            frame = new JFrame ("CronometroServer");
            frame.setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
            frame.setSize (500, 500);
    
            //TEXT AREA
            //labelTime = new JLabel ("0:00:00.0");
            //labelTime.setFont (new Font ("SansSerif", Font.BOLD, 30));
            
            //labelTime.setHorizontalAlignment (JLabel.CENTER);
    
            buttonSalvaFile = new JButton ("SALVA FILE");
            buttonCreaLogin = new JButton ("CREA LOGIN");
            buttonAggiornaSchermi = new JButton ("AGGIORNA");
            buttonConnetti = new JButton ("CONNETTI");
            buttonDisconnetti = new JButton ("DISCONNETTI");
            //buttonSalvaFile.setEnabled (false);
            //buttonCreaLogin.setEnabled (false);
            //buttonAggiornaSchermi.setEnabled (false);
            //buttonDisconnetti.setEnabled (false);
            
            schermoOperatori = new TextArea();
            schermoNotifiche = new TextArea();
            schermoOperatori.setEnabled(false);
            schermoNotifiche.setEnabled(false);
    
    		title.setForeground(Color.blue);
    		title.setHorizontalAlignment(JLabel.CENTER);
    		Font titleFont = new Font("Title", Font.CENTER_BASELINE, 45);
    		title.setFont(titleFont);
    		
    		GridBagConstraints constr = new GridBagConstraints();
    	
            panelButtons = new JPanel (new GridBagLayout());
            panelSchermiTitolo = new JPanel (new GridBagLayout());
            
    		constr.gridx=0;
    		constr.gridy=1;
    		panelSchermiTitolo.add(title,constr);
    		constr.gridx=0;
    		constr.gridy=2;
    		panelSchermiTitolo.add(schermoOperatori,constr);
    		constr.gridx=0;
    		constr.gridy=3;
    		panelSchermiTitolo.add(schermoNotifiche,constr);
    		constr.gridx=0;
    		constr.gridy=4;
    		panelSchermiTitolo.add(status,constr);
    	    constr.gridx=2;
    		constr.gridy=0;
    	    panelButtons.add (buttonDisconnetti,constr);
    	    constr.gridx=3;
    		constr.gridy=0;
    	    panelButtons.add (buttonAggiornaSchermi,constr);
    	    constr.gridx=4;
    		constr.gridy=0;
    	    panelButtons.add (buttonSalvaFile,constr);
    	    constr.gridx=5;
    	 	constr.gridy=0;
    	 	panelButtons.add (buttonCreaLogin,constr);
    	    
    
    		frame.add(title,BorderLayout.NORTH);
            frame.add (panelButtons, BorderLayout.SOUTH);
            frame.add (panelSchermiTitolo, BorderLayout.CENTER);
            frame.setVisible(true);
    
        
            buttonConnetti.addActionListener (new ActionListener() 
            {
                public void actionPerformed (ActionEvent e)
                {
    
              	
            	}
            });
    
            buttonDisconnetti.addActionListener (new ActionListener () {
                public void actionPerformed (ActionEvent e) 
                {
                    try {
    					clientSocket.close();
    	                in.close();
    	                out.close();  
    				} catch (IOException e1) {
    					// TODO Auto-generated catch block
    					e1.printStackTrace();
    				}
    
                	
                }
            });
            
            frame.setVisible(true);        
        }
    
        public static void main (String[] args)
        {
    
        	SwingUtilities.invokeLater (new Runnable() 
        					           {
        		                        public void run() 
        		                        {
                							new provaServer();
                						}
        							   });
        	
        	 
            
        }
    }
    codice:
    public class Operatore {
    	
    	private String identificatoreLogin = new String ();
    	
    	public Operatore()
    	{
    		identificatoreLogin="rafgrav1106";
    
    	}
    	
    	public boolean controllaLogin(String loginInserita)
    	{
    	
    			System.out.println("oper: "+identificatoreLogin);
    				System.out.println("oper:" +loginInserita);
    		if(loginInserita.equals(identificatoreLogin))
    		{
    			return true;
    		}
    		else
    		{
    			return false;
    		}
    		
    	}
    	
    	public String getIdentificatoreLogin() {
    		return identificatoreLogin;
    	}
    	
    	public void setIdentificatoreLogin(String identificatoreLogin)
    	{
    		this.identificatoreLogin=identificatoreLogin;	
    	}
    
    	
    }

  3. #3

    Moderazione

    Java ha una sezione dedicata, sposto.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    grazie MI, sono così arruginito che non vengo sul forum da parecchio. Come si chiama la sezione?

  5. #5
    Originariamente inviato da lello82nap
    Come si chiama la sezione?
    "Java" (è una sottosezione di Programmazione)
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    MItaly, sto così rinco che non avevo nemmeno visto che l'avevo messo in programmazione, e credevo gia fosse injava e che tu stessi parlando di una sezione dedicata al java server auhhuahuahuahuahuaahuhauhauhuauhaa
    no basta, è proprio lunedì.
    grazie compagno!

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.