Untitled
unknown
java
a year ago
2.8 kB
6
Indexable
import java.io.*; import java.util.concurrent.CopyOnWriteArrayList; import java.net.*; public class Server { private static final int PORT = 9999; private static CopyOnWriteArrayList<ClientHandler> clients = new CopyOnWriteArrayList<>(); public static void main(String[] args) { try { ServerSocket serverSocket = new ServerSocket(PORT); System.out.println("waiting for connection"); while (true) { Socket clientSocket = serverSocket.accept(); System.out.println(" connected: " + clientSocket); ClientHandler clientHandler = new ClientHandler(clientSocket); clients.add(clientHandler); new Thread(clientHandler).start(); } } catch (IOException e) { e.printStackTrace(); } } public static void broadcast(String message, ClientHandler sender) { for (ClientHandler client : clients) { if (client != sender) { client.sendMessage(message); } } } private static class ClientHandler implements Runnable { private Socket clientSocket; private PrintWriter out; private BufferedReader in; private String Username; public ClientHandler(Socket socket) { this.clientSocket = socket; try { out = new PrintWriter(clientSocket.getOutputStream(), true); in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { try { Username = getUsername(); System.out.println("User " + Username + " connected."); out.println("Welcome , " + Username + "!"); out.println("Type Your Message"); String inputLine; while ((inputLine = in.readLine()) != null) { System.out.println("[" + Username + "]: " + inputLine); broadcast("[" + Username + "]: " + inputLine, this); } clients.remove(this); in.close(); out.close(); clientSocket.close(); } catch (IOException e) { e.printStackTrace(); } } private String getUsername() throws IOException { out.println(" username:"); return in.readLine(); } public void sendMessage(String message) { out.println(message); out.println("message"); } } }
Editor is loading...
Leave a Comment