Socket server & Multi-client server
Server side code :
package socket;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Server {
private ServerSocket serverSocket;
private Socket clientSocket;
private BufferedReader reader;
private PrintWriter writer;
public static void main(String[] args) {
new Server().start();
public void start() {
try {
serverSocket = new ServerSocket(6600);
System.out.println("Server started on port 6600");
clientSocket = serverSocket.accept();
System.out.println("Client connected");
reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
writer = new PrintWriter(clientSocket.getOutputStream(), true);
new Thread(new ClientMessageHandler()).start();
Scanner scanner = new Scanner(System.in);
String message;
while (true) {
message = scanner.nextLine();
writer.println( message);
} catch (IOException e) {
e.printStackTrace();
} finally {
closeServer();
}
}
public void closeServer() {
try {
reader.close();
writer.close();
clientSocket.close();
serverSocket.close();
} catch (IOException e) {
e.printStackTrace();
private class ClientMessageHandler implements Runnable {
public void run() {
try {
String message;
while ((message = reader.readLine()) != null) {
System.out.println(message);
} catch (IOException e) {
e.printStackTrace();
///////////////////////////////////////////////////////////////////////////////////
Client side code:
package socket;
import java.io.*;
import java.net.*;
import java.util.Scanner;
public class Client {
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
public static void main(String[] args) {
new Client().start();
public void start() {
try {
socket = new Socket("localhost", 6600);
System.out.println("Connected to server");
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
new Thread(new ServerMessageHandler()).start();
Scanner scanner = new Scanner(System.in);
String message;
while (true) {
message = scanner.nextLine();
writer.println("client : "+ message);
} catch (IOException e) {
e.printStackTrace();
} finally {
closeClient();
public void closeClient() {
try {
reader.close();
writer.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
private class ServerMessageHandler implements Runnable {
public void run() {
try {
String message;
while ((message = reader.readLine()) != null) {
System.out.println("server :"+message);
} catch (IOException e) {
e.printStackTrace();
Figure 1 server side output
Figure 2 client side output