Facebook
From Thái Phan Minh Hoàng, 1 Month ago, written in Java.
Embed
Download Paste or View Raw
Hits: 179
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.IOException;
  4. import java.io.InputStreamReader;
  5. import java.io.OutputStreamWriter;
  6. import java.net.Socket;
  7. import java.util.ArrayList;
  8. import java.util.List;
  9.  
  10. public class ClientHandle implements Runnable {
  11.     private BufferedReader bufferedReader;
  12.     private BufferedWriter bufferedWriter;
  13.     private Socket socket;
  14.     private String clientUserName;
  15.     public static List<ClientHandle> clientHandlers = new ArrayList<>();
  16.     public ClientHandle(Socket socket) {
  17.         try {
  18.             this.socket = socket;
  19.             this.bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
  20.             this.bufferedWriter = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
  21.             this.clientUserName = bufferedReader.readLine();
  22.             clientHandlers.add(this);
  23.             boardcastMessage("User " + clientUserName + " joined the chat!");
  24.         } catch (IOException e) {
  25.             closeEveryThing(bufferedReader, bufferedWriter, socket);
  26.         }
  27.     }
  28.     public void boardcastMessage(String msgToSend) {
  29.         for (ClientHandle clientHandler : clientHandlers) {
  30.             // if (!clientHandle.clientUserName.equals(clientUserName)) {
  31.                 try {
  32.                     clientHandler.bufferedWriter.write(msgToSend);
  33.                     clientHandler.bufferedWriter.newLine();
  34.                     clientHandler.bufferedWriter.flush();
  35.                 } catch (IOException e) {
  36.                     closeEveryThing(bufferedReader, bufferedWriter, socket);
  37.                 }
  38.             // }
  39.         }
  40.     }
  41.     @Override
  42.     public void run() {
  43.         String messageFromClient = "";
  44.         while (socket.isConnected()) {
  45.             try {
  46.                 messageFromClient = bufferedReader.readLine();
  47.                 boardcastMessage(messageFromClient);
  48.             } catch(IOException e) {
  49.                 closeEveryThing(bufferedReader, bufferedWriter, socket);
  50.                 break;
  51.             }
  52.         }
  53.     }
  54.     public void closeEveryThing(BufferedReader in, BufferedWriter out, Socket socket) {
  55.         removeClientHandler();
  56.         try {
  57.             if (in != null) in.close();
  58.             if (out != null) out.close();
  59.             if (socket != null) socket.close();
  60.         } catch (IOException e) {
  61.             e.printStackTrace();
  62.         }
  63.     }
  64.     public void removeClientHandler() {
  65.         clientHandlers.remove(this);
  66.         boardcastMessage("User " + clientUserName + " has left the chat!");
  67.     }
  68. }
  69.