Gabri_RDiaz

ClientSide

Jan 14th, 2021
571
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package client.side;
  2.  
  3. import java.awt.event.ActionEvent;
  4. import java.awt.event.ActionListener;
  5. import java.io.DataInputStream;
  6. import java.io.DataOutputStream;
  7. import java.io.IOException;
  8. import java.net.Socket;
  9.  
  10. import javax.swing.JButton;
  11. import javax.swing.JFrame;
  12. import javax.swing.JOptionPane;
  13. import javax.swing.JScrollPane;
  14. import javax.swing.JTextArea;
  15. import javax.swing.JTextField;
  16.  
  17. public class ClientSide extends JFrame implements ActionListener, Runnable{
  18.     private static final long serialVersionUID = 1L;
  19.     Socket socket = null;
  20.     DataInputStream is;
  21.     DataOutputStream os;
  22.    
  23.     String name;
  24.     static JTextField msg = new JTextField();
  25.     private JScrollPane scp;
  26.     static JTextArea txta1;
  27.     JButton send = new JButton("Send");
  28.     JButton logout = new JButton("Logout");
  29.     boolean repeat = true;
  30.    
  31.     public ClientSide(Socket s, String name) {
  32.         super("CLIENT SIDE WINDOW: "+name);
  33.         setLayout(null);
  34.         msg.setBounds(10,10,400,30);
  35.         add(msg);
  36.         txta1 = new JTextArea();
  37.         scp = new JScrollPane(txta1);
  38.         add(scp);
  39.         send.setBounds(420,10,100,30);
  40.         add(send);
  41.         logout.setBounds(420,50,100,30);
  42.         add(logout);
  43.         txta1.setEditable(false);
  44.         send.addActionListener(this);
  45.         logout.addActionListener(this);
  46.         setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
  47.         socket = s;
  48.         this.name=name;
  49.         try {
  50.             is = new DataInputStream(socket.getInputStream());
  51.             os = new DataOutputStream(socket.getOutputStream());
  52.             String txt =name + " joined the chat";
  53.             os.writeUTF(txt);
  54.         }catch(IOException e) {
  55.             System.out.println("IO ERROR");
  56.             e.printStackTrace();
  57.             System.exit(0);
  58.         }
  59.     }
  60.     public void actionPerformed(ActionEvent e) {
  61.         if(e.getSource()==send) {
  62.             String txt= name+ ":" + msg.getText();
  63.         try {
  64.             msg.setText("");
  65.             os.writeUTF(txt);
  66.         }catch(IOException ex) {
  67.             ex.printStackTrace();
  68.         }
  69.         }
  70.         if(e.getSource() == logout) {
  71.             String txt = name+ " left the chat";
  72.             try {
  73.                 os.writeUTF(txt);
  74.                 os.writeUTF("*");
  75.                 repeat = false;
  76.             }catch(IOException ex) {
  77.                 ex.printStackTrace();
  78.             }
  79.         }
  80.     }
  81.    
  82.     public static void main(String[] args) {
  83.         int port = 9090;
  84.         String name = JOptionPane.showInputDialog("Write your name: ");
  85.         Socket s= null;
  86.         try {
  87.             s = new Socket("192.168.14.10",port);
  88.         }catch(IOException e) {
  89.             JOptionPane.showMessageDialog(null, "COULD NOT CONNECT THE SV\n"+e.getMessage(), "Connection error", JOptionPane.ERROR_MESSAGE);   
  90.             System.exit(0);
  91.         }
  92.         if(!name.trim().equals("")) {
  93.             ClientSide client = new ClientSide(s,name);
  94.             client.setBounds(0,0,540,400);
  95.             client.setVisible(true);
  96.             new Thread(client).start();
  97.         }else {
  98.             System.out.println("Name is clear");
  99.         }
  100.     }
  101.     @Override
  102.     public void run() {
  103.         String txt = "";
  104.         while(repeat) {
  105.             try {
  106.                 txt = is.readUTF();
  107.                 txta1.setText(txt);
  108.             }catch(IOException e) {
  109.                 JOptionPane.showMessageDialog(null, "COULD NOT CONNECT THE SV\n"+e.getMessage(), "Connection error", JOptionPane.ERROR_MESSAGE);
  110.                 repeat = false;
  111.             }
  112.         }
  113.         try {
  114.             socket.close();
  115.             System.exit(0);
  116.         }catch(IOException ex) {
  117.             ex.printStackTrace();
  118.         }
  119.     }
  120. }
  121.  
RAW Paste Data