Feedback Form

Introduction to ServerSocket: Accepting Incoming TCP Connections

Introduction to ServerSocket: Accepting Incoming TCP Connections

ServerSocket क्या होता है?

ServerSocket Java Networking का एक बहुत ही important class है जो server-side communication के लिए use किया जाता है। इसका काम होता है client से आने वाले TCP connection को accept करना। जब भी कोई client server से connect होना चाहता है, तो ServerSocket उस connection को listen करता है और accept करता है।

Simple शब्दों में कहें तो ServerSocket एक ऐसा door है जिसके जरिए client अंदर आता है। जैसे किसी building का main gate visitors को अंदर आने देता है, वैसे ही ServerSocket network में incoming client requests को accept करता है।

ServerSocket कैसे काम करता है?

जब हम किसी port number पर ServerSocket create करते हैं, तो वह उस port को bind कर लेता है और continuously incoming connection requests को सुनता रहता है। जैसे ही कोई client connect करता है, server एक Socket object return करता है जो उस client के साथ communication handle करता है।

ServerSocket Working Steps:

  • Step 1: ServerSocket object create करो और किसी specific port पर bind करो।
  • Step 2: Server को listen mode में रखो ताकि वह client request का इंतज़ार करे।
  • Step 3: जब कोई client connect करता है, तो server accept() method call करके connection establish करता है।
  • Step 4: Server एक नया Socket object देता है जिससे data transfer होता है।

ServerSocket के Constructors

Java में ServerSocket class के कई constructors होते हैं जो अलग-अलग configuration में socket को initialize करते हैं।

Constructor Description
ServerSocket() Default constructor जो अभी किसी port को bind नहीं करता।
ServerSocket(int port) Specified port number पर server bind करता है।
ServerSocket(int port, int backlog) Port के साथ backlog (queue size) भी specify करता है।
ServerSocket(int port, int backlog, InetAddress bindAddr) Server को किसी specific IP address और port पर bind करता है।

ServerSocket के Important Methods

ServerSocket class में कुछ commonly used methods होते हैं जो connection और configuration manage करने में मदद करते हैं।

Method Description
accept() Incoming client connection को accept करता है और एक नया Socket return करता है।
close() ServerSocket को बंद कर देता है ताकि कोई नया connection ना बने।
getLocalPort() Return करता है कि server किस port पर listen कर रहा है।
setSoTimeout(int timeout) Timeout set करता है ताकि accept() infinite wait ना करे।
isClosed() Check करता है कि ServerSocket बंद है या नहीं।

ServerSocket Example Code

अब देखते हैं एक simple Java example जो दिखाता है कि ServerSocket कैसे काम करता है।

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

public class SimpleServer {
  public static void main(String[] args) {
    try {
      ServerSocket server = new ServerSocket(8080);
      System.out.println("Server started, waiting for client...");

      Socket socket = server.accept();
      System.out.println("Client connected!");

      BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      PrintWriter output = new PrintWriter(socket.getOutputStream(), true);

      String message = input.readLine();
      System.out.println("Client says: " + message);

      output.println("Hello Client, your message received!");
      socket.close();
      server.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}

Code Explanation (Simple Words में)

  • ServerSocket(8080) — Server को port 8080 पर bind करता है।
  • accept() — Client के आने का इंतज़ार करता है और connection accept करता है।
  • BufferedReader — Client से data पढ़ता है।
  • PrintWriter — Client को response भेजता है।
  • close() — Socket और ServerSocket को बंद कर देता है।

ServerSocket का Life Cycle

ServerSocket का life cycle बहुत simple होता है। यह तब तक active रहता है जब तक server बंद नहीं किया जाता।

  • Creation: ServerSocket किसी port पर bind होता है।
  • Listening: Server continuously incoming requests सुनता है।
  • Accepting: जब client connect करता है, तो connection accept होता है।
  • Communication: Server और client के बीच data exchange होता है।
  • Closing: Communication complete होने के बाद socket बंद हो जाता है।

Networking में ServerSocket का Importance

Java networking में ServerSocket एक foundation है। इसके बिना client-server communication संभव नहीं है। यह TCP आधारित communication को enable करता है जिससे reliable data transfer possible होता है।

Real-world applications जैसे Web Servers, Chat Applications, File Transfer Systems आदि सभी ServerSocket और Socket concept पर आधारित होते हैं।

ServerSocket के फायदे

  • Reliable communication provide करता है क्योंकि यह TCP protocol use करता है।
  • Data loss का risk बहुत कम होता है।
  • Multiple clients के साथ parallel communication possible है।
  • Server को customize करने के लिए timeout, backlog जैसे options available हैं।

ServerSocket की सीमाएँ (Limitations)

  • एक ServerSocket केवल TCP protocol के लिए use होता है।
  • High load या concurrency के लिए performance degrade हो सकती है।
  • Thread management और synchronization का ध्यान रखना पड़ता है।

Real-World Example: Chat Server

मान लो आप एक simple chat application बनाना चाहते हैं जहाँ multiple clients server से connect हों। ServerSocket इस काम के लिए perfect है क्योंकि यह हर incoming client connection को accept कर सकता है और हर client को अलग thread में handle कर सकता है।

ServerSocket server = new ServerSocket(5000);
while(true) {
  Socket client = server.accept();
  System.out.println("New client connected: " + client.getInetAddress());
  // create new thread to handle client
}

ServerSocket Timeout Feature

ServerSocket में timeout feature बहुत useful होता है। कभी-कभी client connect करने में time ले सकता है। ऐसे cases में server को हमेशा wait नहीं करना चाहिए। इसके लिए हम setSoTimeout() use करते हैं।

ServerSocket server = new ServerSocket(6000);
server.setSoTimeout(10000); // 10 seconds timeout

अगर 10 seconds के अंदर कोई client connect नहीं करता, तो SocketTimeoutException throw होती है।

ServerSocket vs Socket

Feature ServerSocket Socket
Purpose Server side connection accept करने के लिए Client side communication handle करने के लिए
Direction Incoming connections सुनता है Server से connect करता है
Creation ServerSocket server द्वारा create किया जाता है Socket client या accept() द्वारा create होता है
Protocol TCP only TCP or UDP (via DatagramSocket)

Exam Specific Notes

  • ServerSocket केवल TCP connections को accept करता है।
  • accept() method एक blocking call है — यह तब तक wait करता है जब तक client connect ना करे।
  • ServerSocket close करने के बाद कोई नया connection accept नहीं किया जा सकता।
  • Multiple clients handle करने के लिए multi-threading use की जाती है।
  • getLocalPort() से आप जान सकते हैं कि server किस port पर चल रहा है।
  • Timeout feature से server को infinite wait से बचाया जा सकता है।
  • हर client के लिए नया Socket object generate होता है।

Key Takeaways

  • ServerSocket Java में TCP based server बनाने का सबसे आसान तरीका है।
  • Communication reliable और ordered होता है।
  • Real-world में servers इसी concept पर काम करते हैं।