import [Link].
*;
import [Link].*;
import [Link].*;
public class ChatServer {
private static final int PORT = 12345; // Server port
private static Set<PrintWriter> clientWriters = new HashSet<>();
public static void main(String[] args) {
[Link]("Chat Server is running...");
try (ServerSocket serverSocket = new ServerSocket(PORT)) {
while (true) {
new ClientHandler([Link]()).start();
}
} catch (IOException e) {
[Link]("Error starting server: " + [Link]());
}
}
private static class ClientHandler extends Thread {
private Socket socket;
private PrintWriter out;
public ClientHandler(Socket socket) {
[Link] = socket;
}
@Override
public void run() {
try (BufferedReader in = new BufferedReader(new InputStreamReader([Link]()))) {
out = new PrintWriter([Link](), true);
synchronized (clientWriters) {
[Link](out);
}
String message;
while ((message = [Link]()) != null) {
[Link]("Received: " + message);
broadcastMessage(message);
}
} catch (IOException e) {
[Link]("Error handling client: " + [Link]());
} finally {
try {
[Link]();
} catch (IOException e) {
[Link]("Error closing socket: " + [Link]());
}
synchronized (clientWriters) {
[Link](out);
}
}
}
private void broadcastMessage(String message) {
synchronized (clientWriters) {
for (PrintWriter writer : clientWriters) {
[Link](message);
}
}
}
}
}
import [Link].*;
import [Link].*;
import [Link].*;
public class ChatClient {
private static final String SERVER_ADDRESS = "localhost"; // Server IP
private static final int SERVER_PORT = 12345;
public static void main(String[] args) {
JFrame frame = new JFrame("Chat Client");
JTextArea chatArea = new JTextArea(20, 50);
JTextField chatField = new JTextField(50);
[Link](false);
[Link]().add(new JScrollPane(chatArea), "Center");
[Link]().add(chatField, "South");
[Link]();
[Link](JFrame.EXIT_ON_CLOSE);
[Link](true);
try (Socket socket = new Socket(SERVER_ADDRESS, SERVER_PORT);
BufferedReader in = new BufferedReader(new InputStreamReader([Link]()));
PrintWriter out = new PrintWriter([Link](), true)) {
// Thread to read messages from server
Thread listener = new Thread(() -> {
try {
String message;
while ((message = [Link]()) != null) {
[Link](message + "\n");
}
} catch (IOException e) {
[Link]("Error reading from server: " + [Link]());
}
});
[Link]();
// Send messages to the server
[Link](event -> {
[Link]([Link]());
[Link]("");
});
} catch (IOException e) {
[Link]("Error connecting to server: " + [Link]());
}
}
}