Simple server client program in Java

Here's an example of a simple server-client program in Java using sockets. The server listens for client connections and echoes back any message received from the client:


Server.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) {
        final int portNumber = 12345;

        try {
            // Create a server socket
            ServerSocket serverSocket = new ServerSocket(portNumber);
            System.out.println("Server started and listening on port " + portNumber);

            // Wait for client connections
            Socket clientSocket = serverSocket.accept();
            System.out.println("Client connected: " + clientSocket.getInetAddress().getHostAddress());

            // Create input and output streams for communication with the client
            BufferedReader inputReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter outputWriter = new PrintWriter(clientSocket.getOutputStream(), true);

            String message;
            // Receive and echo messages until the client disconnects
            while ((message = inputReader.readLine()) != null) {
                System.out.println("Received from client: " + message);
                outputWriter.println("Echo: " + message);
            }

            // Close streams and sockets
            inputReader.close();
            outputWriter.close();
            clientSocket.close();
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


Client.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;

public class Client {
    public static void main(String[] args) {
        final String serverAddress = "localhost";
        final int portNumber = 12345;

        try {
            // Connect to the server
            Socket socket = new Socket(serverAddress, portNumber);
            System.out.println("Connected to server: " + serverAddress + " on port " + portNumber);

            // Create input and output streams for communication with the server
            BufferedReader inputReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter outputWriter = new PrintWriter(socket.getOutputStream(), true);

            BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));
            String message;
            // Read messages from the console and send them to the server
            while ((message = consoleReader.readLine()) != null) {
                outputWriter.println(message);
                System.out.println("Sent to server: " + message);
                String response = inputReader.readLine();
                System.out.println("Response from server: " + response);
            }

            // Close streams and socket
            inputReader.close();
            outputWriter.close();
            consoleReader.close();
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}


In the server code, we create a ServerSocket and wait for client connections using the accept() method. Once a client is connected, we create input and output streams to communicate with the client. The server then receives messages from the client, echoes them back, and continues until the client disconnects.


The client code connects to the server using the server's IP address and port number. It creates input and output streams for communication with the server. The client reads messages from the console and sends them to the server. It also receives responses from the server and prints them to the console.


You can run the server and client code in separate Java programs. When the client connects to the server, you can type messages in the client console, and they will be echoed back by the server.