Java Topics
HubJava Collections FrameworkCollections Practice ProgramsComparable vs ComparatorGenericsIteratorArrayListLinkedListStackVectorHashMapHashtableLinkedHashMapTreeMapArrayDequeDeque Double-Ended QueuePriorityQueueHashSetLinkedHashSetTreeSetAdapter PatternBuilder PatternFactory PatternMVC PatternObserver PatternSingleton PatternDynamic ProgrammingGraphHashingHeapLinked List DSAQueue DSARecursionSearching AlgorithmsSorting AlgorithmsStack DSATime ComplexityTreesException Handling Best PracticesCustom ExceptionException Hierarchyfinally BlockException Handlingthrow aur throwstry-catchBuffered StreamsByte StreamsCharacter StreamsDeserializationFile ClassJava NIO New I/OSerializationArrays in JavaArray OperationsArray Practice ProgramsArray Interview QuestionsJagged ArrayMulti-Dimensional ArraysOne Dimensional Arraybreak aur continuedo-while Loopfor Loopif-else StatementsNested Loopsswitch-case Statementwhile LoopJava Compilation ProcessJava ki FeaturesPehla Java ProgramHistory of JavaJava EditionsJava Program StructureJDK, JRE aur JVMJava Kya Hai?Immutable StringsString Class in JavaString Interview QuestionsString MethodsString Practice ProgramsStringBufferStringBuilderComments in JavaData Types in JavaIdentifiers in JavaInput & Output in JavaJava KeywordsOperators in JavaType Casting in JavaVariables in JavaJava Coding Interview QuestionsCollections Interview QuestionsCore Java Interview QuestionsJDBC Interview QuestionsMultithreading Interview QuestionsOOPs Interview QuestionsSpring Framework Interview QuestionsJava 8 Date/Time APIDefault aur Static Methods in InterfaceFunctional InterfaceLambda ExpressionMethod ReferenceOptional ClassStream APIBatch ProcessingCallableStatementJDBC ArchitectureJDBC — Java Database ConnectivityJDBC Practice ProjectsMySQL ConnectionPreparedStatementResultSetStatement InterfaceTransaction ManagementCreating ThreadsDaemon ThreadExecutor FrameworkInter-Thread CommunicationMultithreading Practice ProgramsRunnable InterfaceSynchronizationThread ClassMultithreading IntroductionThread Life CycleThread PriorityJava Cheat SheetImportant Formulas & Key ConceptsImportant Java ProgramsJava Quick RevisionAbstract ClassAbstractionAnonymous ClassClass and ObjectConstructorEncapsulationInheritanceInner ClassInterfaceMethod OverloadingMethod OverridingObject ClassObject CloningObject-Oriented Programming OOPPolymorphismstatic Keywordsuper Keywordthis KeywordWrapper ClassesArray Practice ProgramsBasic Java Practice ProgramsCollection Practice ProgramsJDBC Practice ProgramsMultithreading Practice ProgramsOOPs Practice ProgramsPlacement Coding QuestionsString Practice ProgramsBanking SystemChat ApplicationE-Commerce Backend — Spring Boot REST APIEmployee Management SystemLibrary Management SystemSpring Boot Fullstack ProjectStudent Management SystemCookies in ServletExpression Language ELGenericServletHttpServletJavaServer Pages JSPJSP TagsMVC ArchitectureHttpServletRequest & HttpServletResponseServlet IntroductionServlet Life CycleSession TrackingDependency InjectionSpring BeansSpring CoreSpring FrameworkAPI GatewaySpring Cloud Config ServerDocker DeploymentEureka Server — Service DiscoverySpring Boot CRUD ApplicationException Handling in Spring BootJWT AuthenticationREST API in Spring BootSpring SecuritySpring BootSpring Data JPAValidation in Spring Boot
Chat Application
Last Updated : 26 May, 2026
title: Chat Application
Projects63 words6 headingsExamples included
title: Chat Application description: Java Socket Programming se Chat Application
Java Socket Programming se multi-client chat application.
Features
- Multiple clients ek saath connect ho sakte hain
- Broadcast messaging (sabko message)
- Private messaging (@username message)
- User list dekhna
- Join aur leave notifications
Technology Stack
- Java SE 17+
- Java Socket Programming
- Multithreading
- Console-based
Architecture
Client 1 ──┐
Client 2 ──┤──→ Server (ChatServer.java) ──→ Broadcast to all
Client 3 ──┘
ChatServer.java
import java.io.*;
import java.net.*;
import java.util.*;
import java.util.concurrent.*;
public class ChatServer {
private static final int PORT = 12345;
private static Map<String, PrintWriter> clients = new ConcurrentHashMap<>();
public static void main(String[] args) throws IOException {
System.out.println("Chat Server start ho gaya port " + PORT + " par...");
ExecutorService pool = Executors.newCachedThreadPool();
try (ServerSocket serverSocket = new ServerSocket(PORT)) {
while (true) {
Socket clientSocket = serverSocket.accept();
pool.execute(new ClientHandler(clientSocket));
}
}
}
static void broadcast(String message, String senderName) {
clients.forEach((name, writer) -> {
if (!name.equals(senderName)) writer.println(message);
});
}
static void sendPrivate(String message, String toUser, String fromUser) {
PrintWriter writer = clients.get(toUser);
if (writer != null) {
writer.println("[Private from " + fromUser + "]: " + message);
}
}
static void addClient(String name, PrintWriter writer) {
clients.put(name, writer);
broadcast("📢 " + name + " chat mein join ho gaya!", name);
System.out.println("New client: " + name);
}
static void removeClient(String name) {
clients.remove(name);
broadcast("📢 " + name + " chat se chala gaya.", name);
System.out.println("Client left: " + name);
}
static String getUserList() {
return "Online users: " + String.join(", ", clients.keySet());
}
// ClientHandler — Har client ke liye alag thread
static class ClientHandler implements Runnable {
private Socket socket;
private PrintWriter out;
private BufferedReader in;
private String username;
ClientHandler(Socket socket) { this.socket = socket; }
@Override
public void run() {
try {
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(), true);
// Username lo
out.println("Apna username enter karo:");
username = in.readLine();
if (username == null || username.trim().isEmpty()) {
socket.close(); return;
}
username = username.trim();
if (clients.containsKey(username)) {
out.println("Username already liya hua hai. Dobara try karo.");
socket.close(); return;
}
addClient(username, out);
out.println("Welcome " + username + "! Commands: /list, /pm @user msg, /quit");
String message;
while ((message = in.readLine()) != null) {
if (message.equalsIgnoreCase("/quit")) break;
else if (message.equalsIgnoreCase("/list")) out.println(getUserList());
else if (message.startsWith("/pm ")) {
// Private message: /pm @username message
String[] parts = message.split(" ", 3);
if (parts.length == 3) {
String toUser = parts[1].replace("@", "");
sendPrivate(parts[2], toUser, username);
}
} else {
broadcast("[" + username + "]: " + message, username);
}
}
} catch (IOException e) {
System.out.println("Error with client " + username);
} finally {
if (username != null) removeClient(username);
try { socket.close(); } catch (IOException e) {}
}
}
}
}
ChatClient.java
java exampleWoHoTech
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class ChatClient {
private static final String SERVER = "localhost";
private static final int PORT = 12345;
public static void main(String[] args) throws IOException {
System.out.println("Server se connect ho raha hai...");
try (Socket socket = new Socket(SERVER, PORT);
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
Scanner sc = new Scanner(System.in)) {
// Server messages receive karne ka thread
Thread receiverThread = new Thread(() -> {
try {
String message;
while ((message = in.readLine()) != null) {
System.out.println(message);
}
} catch (IOException e) {
System.out.println("Server se connection toot gayi.");
}
});
receiverThread.setDaemon(true);
receiverThread.start();
// User input send karna
String input;
while ((input = sc.nextLine()) != null) {
out.println(input);
if (input.equalsIgnoreCase("/quit")) break;
}
}
System.out.println("Chat se bahar aa gaye.");
}
}How to Run
bash exampleWoHoTech
# Step 1: Server chalao
javac ChatServer.java
java ChatServer
# Step 2: Multiple clients chalao (alag terminals mein)
javac ChatClient.java
java ChatClient
java ChatClient
java ChatClientExam Focus
Revise definitions, diagrams, examples, and short-answer points for Chat Application.
Interview Use
Prepare one clear explanation, one practical example, and one common mistake for this Java topic.
Search Terms
java, java programming, core java, java master course, java notes, master, course, projects
Related Java Topics
Continue learning this concept
ProjectsBanking Systemtitle: Banking SystemProjectsE-Commerce Backend — Spring Boot REST APItitle: E-Commerce BackendProjectsEmployee Management Systemtitle: Employee Management SystemProjectsLibrary Management Systemtitle: Library Management SystemProjectsSpring Boot Fullstack Projecttitle: Spring Boot Fullstack ProjectProjectsStudent Management Systemtitle: Student Management System