RKTechGame | Socket Programming Basics in Java

Socket Programming Introduction

Socket programming ek technique hai jisme computers ya programs network ke zariye aapas me communicate karte hain. Java me Socket class client ko represent karti hai aur ServerSocket class server ko.

Ye TCP/IP protocol ke upar kaam karta hai jisme ek reliable two-way communication establish hoti hai.

Basic Steps in Socket Programming

Example: Simple Socket Server

import java.net.*;
import java.io.*;

public class SimpleServer {
    public static void main(String[] args) throws IOException {
        int port = 5000;
        ServerSocket server = new ServerSocket(port);
        System.out.println("Server started at port " + port);
        
        try (Socket client = server.accept()) {
            System.out.println("Client connected: " + client.getInetAddress());
            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
            PrintWriter out = new PrintWriter(client.getOutputStream(), true);

            String line;
            while ((line = in.readLine()) != null) {
                System.out.println("Received from client: " + line);
                out.println("Echo: " + line);  // Server echoes back the message
                if ("exit".equalsIgnoreCase(line)) break;
            }
        }
        System.out.println("Server closing...");
        server.close();
    }
}

Example: Simple Socket Client

import java.net.*;
import java.io.*;

public class SimpleClient {
    public static void main(String[] args) throws IOException {
        String serverName = "localhost";
        int port = 5000;
        try (Socket socket = new Socket(serverName, port);
             BufferedReader console = new BufferedReader(new InputStreamReader(System.in));
             PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
             BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) {

            System.out.println("Connected to server at " + serverName + ":" + port);

            String userInput;
            while ((userInput = console.readLine()) != null) {
                out.println(userInput);  // send to server
                System.out.println("Server response: " + in.readLine());  // read from server
                if ("exit".equalsIgnoreCase(userInput)) break;
            }
        }
    }
}