Write a java program for simple standalone chatting application.
ChatServer.java
import java.io.*;
import java.net.*;
public class ChatServer {
public static void main(String[] args) {
int port = 6000;
try {
ServerSocket serverSocket = new ServerSocket(port);
System.out.println("Server started on port " + port);
Socket socket = serverSocket.accept();
System.out.println("Client connected.");
// Streams
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
// Thread to receive messages from client
Thread receiveThread = new Thread(() -> {
String msg;
try {
while ((msg = in.readLine()) != null) {
System.out.println("Client: " + msg);
}
} catch (IOException e) {
System.out.println("Connection closed.");
}
});
receiveThread.start();
// Main thread to send messages to client
String message;
while (true) {
message = userInput.readLine();
if (message.equalsIgnoreCase("exit")) {
break;
}
out.println(message);
}
// Close resources
socket.close();
serverSocket.close();
System.out.println("Server terminated.");
} catch (Exception e) {
e.printStackTrace();
}
}
}
ChatClient.java
import java.io.*;
import java.net.*;
public class ChatClient {
public static void main(String[] args) {
String host = "localhost";
int port = 6000;
try {
Socket socket = new Socket(host, port);
System.out.println("Connected to server.");
// Streams
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
BufferedReader userInput = new BufferedReader(new InputStreamReader(System.in));
// Thread to receive messages from server
Thread receiveThread = new Thread(() -> {
String msg;
try {
while ((msg = in.readLine()) != null) {
System.out.println("Server: " + msg);
}
} catch (IOException e) {
System.out.println("Connection closed.");
}
});
receiveThread.start();
// Main thread to send messages to server
String message;
while (true) {
message = userInput.readLine();
if (message.equalsIgnoreCase("exit")) {
break;
}
out.println(message);
}
// Close resources
socket.close();
System.out.println("Client terminated.");
} catch (Exception e) {
e.printStackTrace();
}
}
}