Socket in Java con Gui

Discussione in 'Java' iniziata da Tethys, 26 Gennaio 2018.

  1. Tethys

    Tethys Nuovo Utente

    Registrato:
    26 Gennaio 2018
    Messaggi:
    3
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Femmina
    Buonasera,
    mi sto imbattendo nello sviluppo di una semplice chat (uno a uno) in java. Mi serve perchè devo sviluppare un progetto universitario. Ho scritto tutto il codice, ma le due interfacce (che hanno una textarea, una textfield ed un button) non si parlano:(. Se qualcuno riuscisse a darmi qualche suggerimento ne sarei grata. Copio il codice qui sotto.
    Codice:
    Classe per il server:
    import java.awt.EventQueue;
    import java.net.ServerSocket;
    import java.net.Socket;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.JTextField;
    import javax.swing.JButton;
    import java.awt.Font;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class chat_server {
        public JFrame frmServer;
        public  static JTextField msg_text = new JTextField();;
        public static  JTextArea msg_area = new JTextArea();
        public  static JButton msg_send = new JButton("Send");
        /**
        * Launch the application.
        */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        chat_server window = new chat_server();
                        window.frmServer.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            String msgin="";
            try {
                ss = new ServerSocket(6789); //diamo la porta del server
                s= ss.accept();//mi metto in ascolto sulla porta che ho aperto
                ss.close();//per fare una connessione uno a uno
                din= new DataInputStream(s.getInputStream());
                dout=new DataOutputStream(s.getOutputStream());
              
                while(!msgin.equals("exit")) {
                    msgin=din.readUTF();
                    msg_area.append("\n"+msgin);;// visualizziamo il messaggio dal client
                }
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
     
        static ServerSocket ss;
        static Socket s;
        static DataInputStream din;
        static DataOutputStream dout;
     
        /**
        * Create the application.
        */
        public chat_server() {
            initialize();
        }
        /**
        * Initialize the contents of the frame.
        */
        private void initialize() {
            frmServer = new JFrame();
            frmServer.setTitle("Server");
            frmServer.setBounds(100, 100, 450, 300);
            frmServer.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frmServer.getContentPane().setLayout(null);
          
            JTextArea msg_area = new JTextArea();
            msg_area.setBounds(12, 12, 400, 150);
            frmServer.getContentPane().add(msg_area);
          
            msg_text = new JTextField();
            msg_text.setBounds(12, 188, 290, 35);
            frmServer.getContentPane().add(msg_text);
            msg_text.setColumns(10);
          
            JButton msg_send = new JButton("Send");
            msg_send.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    String msgout="";
                    try {
                      
                        msgout=msg_text.getText().trim();
                        dout.writeUTF("Server: "+msgout);//mandiamo il messaggio del server al client
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
            msg_send.setFont(new Font("Arial", Font.BOLD, 14));
            msg_send.setBounds(325, 188, 95, 35);
            frmServer.getContentPane().add(msg_send);
        }
    }
    
    Classe per il Client:
    import java.awt.EventQueue;
    import javax.swing.JFrame;
    import javax.swing.JTextArea;
    import javax.swing.JButton;
    import javax.swing.JTextField;
    import java.awt.Font;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    public class chat_client {
        public JFrame frmClient;
        public  static JTextField msg_text = new JTextField();;
        public static  JTextArea msg_area = new JTextArea();
        public  static JButton msg_send = new JButton("Send");
        /**
        * Launch the application.
        */
        public static void main(String[] args) {
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        chat_client window = new chat_client();
                        window.frmClient.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
            String msgin="";
            try {
                s=new Socket(InetAddress.getLocalHost(),6789);// indirizzo ip locale perche lanciamo client e server dalla stessa macchina
                din=new DataInputStream(s.getInputStream());
                dout=new DataOutputStream(s.getOutputStream());
              
                while (!msgin.equals("exit")) {
                    msgin=din.readUTF();
                    msg_area.append("\n"+msgin);;
                }
              
              
            }catch(Exception e) {
                e.printStackTrace();
            }
        }
        static Socket s;
        static DataInputStream din;
        static DataOutputStream dout;
        /**
        * Create the application.
        */
        public chat_client() {
            initialize();
        }
        /**
        * Initialize the contents of the frame.
        */
        private void initialize() {
            frmClient = new JFrame();
            frmClient.setTitle("Client");
            frmClient.setBounds(100, 100, 450, 300);
            frmClient.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frmClient.getContentPane().setLayout(null);
          
          
            msg_area.setBounds(12, 12, 400, 150);
            frmClient.getContentPane().add(msg_area);
          
          
            msg_send.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    String msgout="";
                    try {
                      
                        msgout=msg_text.getText().trim();
                        dout.writeUTF("Client: "+msgout);//mandiamo il messaggio del server al client
                    } catch (IOException e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                    }
                }
            });
            msg_send.setFont(new Font("Arial", Font.BOLD, 14));
            msg_send.setBounds(325, 188, 95, 35);
            frmClient.getContentPane().add(msg_send);
          
          
            msg_text.setBounds(12, 188, 290, 35);
            frmClient.getContentPane().add(msg_text);
            msg_text.setColumns(10);
        }
    }
    Spero nei vostri suggerimenti.
    Vi ringrazio anticipatamente. Buon Pomeriggio a tutti ;)
     
    Ultima modifica di un moderatore: 26 Gennaio 2018
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.803
    Mi Piace Ricevuti:
    283
    Punteggio:
    83
    Sesso:
    Maschio
    @Tethys
    Da regolamento del forum, come tutti noi sei tenuta ad usare il tag code.gif quando posti del codice, oppure la funzione codice dalla barra degli strumenti
    box inserisci 2.png.JPG
    Inoltre ti prego di leggere attentamente il regolamento generale del forum e quello di sezione dove posti
    Grazie
    Per questa volta te lo sistemo io ma mi raccomando per il futuro
     
  3. Tethys

    Tethys Nuovo Utente

    Registrato:
    26 Gennaio 2018
    Messaggi:
    3
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Femmina
    Ciao Max, scusami questa cosa mi era sfuggita...ti ringrazio per la correzione...ho sbagliato anche la sezione?:(..
     
Sto caricando...

Condividi questa Pagina