Untitled
unknown
java
a year ago
2.8 kB
9
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