Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import javax.swing.*;
- import java.awt.*;
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.Socket;
- final public class ClientFrame extends JFrame
- {
- private String name;
- private JList<String> chat;
- private DefaultListModel<String> chatModel;
- private JTextField textField;
- private JButton send;
- private Socket socket;
- private PrintWriter out;
- private BufferedReader in;
- public ClientFrame() throws IOException
- {
- super("chat");
- socket = new Socket("127.0.0.1",8888);
- out = new PrintWriter(socket.getOutputStream(), true);
- in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- chatModel = new DefaultListModel<>();
- chat = new JList<>(chatModel);
- this.add(new JScrollPane(chat));
- name = JOptionPane.showInputDialog(this,"Enter your name","Start", JOptionPane.INFORMATION_MESSAGE);
- out.println(name);
- while(in.readLine().equals("already_chosen"))
- {
- JOptionPane.showMessageDialog(this,"Somebody has already chosen this name or this name is incorrect","Warning",JOptionPane.WARNING_MESSAGE);
- name = JOptionPane.showInputDialog(this,"Enter your name","Start", JOptionPane.INFORMATION_MESSAGE);
- out.println(name);
- }
- out.println(name + " has entered the chat");
- textField = new JTextField(30);
- send = new JButton("Send");
- send.addActionListener(e -> {
- String message = getMessage();
- if(!message.equals(""))
- {
- out.println(message);
- }
- });
- JPanel sendingPanel = new JPanel();
- sendingPanel.setLayout(new FlowLayout());
- sendingPanel.add(textField);
- sendingPanel.add(send);
- this.add(sendingPanel,BorderLayout.SOUTH);
- this.setVisible(true);
- this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- this.setFocusable(true);
- this.setBounds(0,0,700,800);
- this.setResizable(false);
- }
- private String getMessage()
- {
- String message = textField.getText();
- textField.setText("");
- return name + " : " + message;
- }
- public static void main(String[] args) throws IOException
- {
- ClientFrame client = new ClientFrame();
- String fromServer;
- while ((fromServer = client.in.readLine()) != null)
- {
- client.chatModel.addElement(fromServer);
- }
- }
- //===========================================================================================================
- import java.net.*;
- import java.io.*;
- import java.util.LinkedList;
- import java.util.TreeSet;
- final public class MultiServerThread extends Thread
- {
- private Socket socket = null;
- private PrintWriter out;
- private BufferedReader in;
- private LinkedList<MultiServerThread> listOfThreads;
- private static TreeSet<String> setOfNames;
- public MultiServerThread(Socket socket, LinkedList<MultiServerThread> listOfThreads, TreeSet<String> setOfNames)
- {
- this.socket = socket;
- this.listOfThreads = listOfThreads;
- this.setOfNames = setOfNames;
- }
- @Override
- public void run()
- {
- try
- {
- out = new PrintWriter(socket.getOutputStream(), true);
- in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- String inputLine, outputLine;
- inputLine = in.readLine();
- while(setOfNames.contains(inputLine) || inputLine.equals(""))
- {
- out.println("already_chosen");
- inputLine = in.readLine();
- }
- out.println(inputLine);
- setOfNames.add(inputLine);
- while((inputLine = in.readLine()) != null)
- {
- outputLine = inputLine;
- for (MultiServerThread thread : listOfThreads)
- {
- thread.out.println(outputLine);
- }
- }
- socket.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- //===============================================================================
- import java.net.*;
- import java.io.*;
- import java.util.LinkedList;
- import java.util.TreeSet;
- final public class MultiAcceptingServer
- {
- private static LinkedList<MultiServerThread> listOfThreads = new LinkedList<>();
- private static TreeSet<String> setOfNames = new TreeSet<>();
- public static void main(String[] args)
- {
- int portNumber = 8888;
- boolean isListening = true;
- try(ServerSocket serverSocket = new ServerSocket(portNumber))
- {
- while(isListening)
- {
- MultiServerThread newThread = new MultiServerThread(serverSocket.accept(),listOfThreads,setOfNames);
- listOfThreads.add(newThread);
- newThread.start();
- }
- }
- catch (IOException e)
- {
- e.printStackTrace();
- System.exit(1);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement