Advertisement
Guest User

Untitled

a guest
May 23rd, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.25 KB | None | 0 0
  1. import javax.swing.*;
  2. import java.awt.*;
  3. import java.io.BufferedReader;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.PrintWriter;
  7. import java.net.Socket;
  8.  
  9. final public class ClientFrame extends JFrame
  10. {
  11.     private String name;
  12.  
  13.     private JList<String> chat;
  14.     private DefaultListModel<String> chatModel;
  15.     private JTextField textField;
  16.     private JButton send;
  17.  
  18.     private Socket socket;
  19.     private PrintWriter out;
  20.     private BufferedReader in;
  21.  
  22.     public ClientFrame() throws IOException
  23.     {
  24.         super("chat");
  25.  
  26.         socket = new Socket("127.0.0.1",8888);
  27.         out = new PrintWriter(socket.getOutputStream(), true);
  28.         in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  29.  
  30.         chatModel = new DefaultListModel<>();
  31.         chat = new JList<>(chatModel);
  32.         this.add(new JScrollPane(chat));
  33.  
  34.         name = JOptionPane.showInputDialog(this,"Enter your name","Start", JOptionPane.INFORMATION_MESSAGE);
  35.         out.println(name);
  36.         while(in.readLine().equals("already_chosen"))
  37.         {
  38.             JOptionPane.showMessageDialog(this,"Somebody has already chosen this name or this name is incorrect","Warning",JOptionPane.WARNING_MESSAGE);
  39.             name = JOptionPane.showInputDialog(this,"Enter your name","Start", JOptionPane.INFORMATION_MESSAGE);
  40.             out.println(name);
  41.         }
  42.         out.println(name + " has entered the chat");
  43.  
  44.         textField = new JTextField(30);
  45.         send = new JButton("Send");
  46.         send.addActionListener(e -> {
  47.             String message = getMessage();
  48.             if(!message.equals(""))
  49.             {
  50.                 out.println(message);
  51.             }
  52.           });
  53.  
  54.         JPanel sendingPanel = new JPanel();
  55.         sendingPanel.setLayout(new FlowLayout());
  56.         sendingPanel.add(textField);
  57.         sendingPanel.add(send);
  58.         this.add(sendingPanel,BorderLayout.SOUTH);
  59.  
  60.         this.setVisible(true);
  61.         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  62.         this.setFocusable(true);
  63.         this.setBounds(0,0,700,800);
  64.         this.setResizable(false);
  65.  
  66.     }
  67.  
  68.     private String getMessage()
  69.     {
  70.         String message = textField.getText();
  71.         textField.setText("");
  72.         return name + " : " + message;
  73.     }
  74.  
  75.     public static void main(String[] args) throws IOException
  76.     {
  77.         ClientFrame client = new ClientFrame();
  78.         String fromServer;
  79.         while ((fromServer = client.in.readLine()) != null)
  80.         {
  81.             client.chatModel.addElement(fromServer);
  82.         }
  83.     }
  84.  
  85.  
  86. //===========================================================================================================
  87.  
  88.  
  89. import java.net.*;
  90. import java.io.*;
  91. import java.util.LinkedList;
  92. import java.util.TreeSet;
  93.  
  94. final public class MultiServerThread extends Thread
  95. {
  96.     private Socket socket = null;
  97.     private PrintWriter out;
  98.     private BufferedReader in;
  99.     private LinkedList<MultiServerThread> listOfThreads;
  100.     private static TreeSet<String> setOfNames;
  101.  
  102.     public MultiServerThread(Socket socket, LinkedList<MultiServerThread> listOfThreads, TreeSet<String> setOfNames)
  103.     {
  104.         this.socket = socket;
  105.         this.listOfThreads = listOfThreads;
  106.         this.setOfNames = setOfNames;
  107.     }
  108.  
  109.     @Override
  110.     public void run()
  111.     {
  112.         try
  113.         {
  114.             out = new PrintWriter(socket.getOutputStream(), true);
  115.             in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  116.             String inputLine, outputLine;
  117.             inputLine = in.readLine();
  118.             while(setOfNames.contains(inputLine) || inputLine.equals(""))
  119.             {
  120.                 out.println("already_chosen");
  121.                 inputLine = in.readLine();
  122.             }
  123.             out.println(inputLine);
  124.             setOfNames.add(inputLine);
  125.  
  126.             while((inputLine = in.readLine()) != null)
  127.             {
  128.                 outputLine = inputLine;
  129.                 for (MultiServerThread thread : listOfThreads)
  130.                 {
  131.                     thread.out.println(outputLine);
  132.                 }
  133.             }
  134.             socket.close();
  135.         }
  136.         catch (IOException e)
  137.         {
  138.             e.printStackTrace();
  139.         }
  140.     }
  141. }
  142.  
  143. //===============================================================================
  144.  
  145. import java.net.*;
  146. import java.io.*;
  147. import java.util.LinkedList;
  148. import java.util.TreeSet;
  149.  
  150. final public class MultiAcceptingServer
  151. {
  152.  
  153.     private static LinkedList<MultiServerThread> listOfThreads = new LinkedList<>();
  154.     private static TreeSet<String> setOfNames = new TreeSet<>();
  155.  
  156.     public static void main(String[] args)
  157.     {
  158.         int portNumber = 8888;
  159.         boolean isListening = true;
  160.         try(ServerSocket serverSocket = new ServerSocket(portNumber))
  161.         {
  162.             while(isListening)
  163.             {
  164.                 MultiServerThread newThread = new MultiServerThread(serverSocket.accept(),listOfThreads,setOfNames);
  165.                 listOfThreads.add(newThread);
  166.                 newThread.start();
  167.             }
  168.         }
  169.         catch (IOException e)
  170.         {
  171.             e.printStackTrace();
  172.             System.exit(1);
  173.         }
  174.     }
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement