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

Rispondi quotando