Networking in Java: Connection-Oriented Protocol (TCP) Guide
Networking in Java: Connection-Oriented Protocol (TCP) Guide
Introduction to Networking in Java
Java में Networking का मतलब होता है — दो या उससे ज्यादा devices को आपस में connect करके data exchange करना। Java language में Networking को handle करने के लिए java.net package दिया गया है। यह package classes और interfaces का collection है जो network programming को आसान बनाता है।
Java में दो प्रकार के protocols होते हैं — Connection-Oriented (TCP) और Connectionless (UDP)। इस blog में हम TCP यानी Transmission Control Protocol के बारे में detail में जानेंगे क्योंकि यह reliable communication के लिए सबसे ज्यादा इस्तेमाल किया जाता है।
What is TCP (Transmission Control Protocol)?
TCP एक connection-oriented protocol है यानी data transfer से पहले sender और receiver के बीच एक proper connection establish किया जाता है। यह ensure करता है कि data बिना loss के, सही sequence में और safely destination तक पहुँचे।
TCP को reliable protocol इसलिए कहा जाता है क्योंकि यह हर packet की acknowledgment (ACK) भेजता है और अगर कोई packet खो जाए तो उसे दोबारा भेजता है।
Features of TCP
- Reliable Communication: TCP हर data packet की confirmation भेजता है ताकि data loss न हो।
- Ordered Data Delivery: जो data पहले भेजा गया है, वही पहले receive होगा।
- Error Checking: TCP checksum के through errors detect करता है।
- Flow Control: Receiver की capacity के हिसाब से data भेजा जाता है ताकि congestion न हो।
- Connection-Oriented: Communication शुरू होने से पहले connection establish किया जाता है।
TCP in Java Networking
Java में TCP-based communication के लिए दो मुख्य classes होती हैं — Socket और ServerSocket।
ServerSocket class server side पर connection establish करने के लिए उपयोग होती है, जबकि Socket class client side पर data भेजने और receive करने के लिए use की जाती है।
ServerSocket Class
ServerSocket class का उपयोग server program में किया जाता है। यह किसी specific port पर incoming client requests को सुनती रहती है और जब कोई client connect होता है तो उसके लिए एक dedicated Socket बना देती है।
Socket Class
Socket class का उपयोग client side पर किया जाता है। जब client को server से connect होना होता है, तो वह server के IP address और port number के साथ Socket object बनाता है।
TCP Communication Process in Java
TCP communication में तीन main steps होते हैं — Connection Establishment, Data Transmission, और Connection Termination।
1. Connection Establishment
Client एक request भेजता है और server उस request को accept करता है। दोनों के बीच handshake process होता है जिसे "Three-Way Handshake" कहा जाता है — SYN, SYN-ACK, ACK।
2. Data Transmission
Once connection established, data दोनों के बीच InputStream और OutputStream के through भेजा और receive किया जाता है।
3. Connection Termination
Communication complete होने के बाद TCP connection को properly close करना जरूरी होता है ताकि resources free हो सकें।
TCP Client-Server Example in Java
Server Program (ServerSocket Example)
import java.io.*;
import java.net.*;
class TCPServer {
public static void main(String args[]) throws Exception {
ServerSocket ss = new ServerSocket(6666);
System.out.println("Server started, waiting for client...");
Socket s = ss.accept();
DataInputStream dis = new DataInputStream(s.getInputStream());
String str = (String)dis.readUTF();
System.out.println("Message from client: " + str);
ss.close();
}
}
Client Program (Socket Example)
import java.io.*;
import java.net.*;
class TCPClient {
public static void main(String args[]) throws Exception {
Socket s = new Socket("localhost", 6666);
DataOutputStream dout = new DataOutputStream(s.getOutputStream());
dout.writeUTF("Hello Server!");
dout.flush();
dout.close();
s.close();
}
}
Working of TCP in Java
ऊपर के example में server पहले ServerSocket create करता है और client की request का इंतजार करता है। जैसे ही client connect होता है, server उस connection को accept करता है और client से data receive करता है।
Client side पर, Socket class server के IP और port से जुड़ती है और message भेजती है। दोनों sides InputStream और OutputStream के जरिए data exchange करते हैं।
Important Methods of Socket and ServerSocket
| Class | Method | Description |
|---|---|---|
| ServerSocket | accept() | Client connection accept करता है। |
| Socket | getInputStream() | Data receive करने के लिए stream देता है। |
| Socket | getOutputStream() | Data भेजने के लिए stream देता है। |
| Socket | close() | Connection बंद करता है। |
| ServerSocket | close() | Server socket बंद करता है। |
Advantages of TCP
- Data loss के chances बहुत कम होते हैं क्योंकि हर packet की acknowledgment होती है।
- Sequence maintain रहता है, यानी data सही order में पहुंचता है।
- Reliable communication के लिए best protocol है।
- Error detection और correction automatic तरीके से होता है।
Disadvantages of TCP
- Speed थोड़ी slow होती है क्योंकि error checking और acknowledgment time लेती है।
- Real-time applications जैसे video streaming के लिए UDP ज्यादा बेहतर होता है।
TCP vs UDP Comparison
| Feature | TCP | UDP |
|---|---|---|
| Connection Type | Connection-Oriented | Connectionless |
| Reliability | High (Acknowledgment based) | Low (No Acknowledgment) |
| Speed | Slow | Fast |
| Use Case | File Transfer, Email, Web Browsing | Video Streaming, Gaming |
Applications of TCP in Java
- Web Servers और Browsers के बीच HTTP communication।
- File Transfer Protocol (FTP)।
- Email Transfer (SMTP, POP3)।
- Database connectivity के लिए reliable data exchange।
Important Terms in TCP
- Port Number: हर service के लिए unique number होता है (e.g., HTTP – 80, FTP – 21)।
- Socket: Network communication का endpoint होता है।
- IP Address: हर system का unique address जो network पर identify करता है।
- Streams: Data भेजने और पाने के लिए communication channel।
Error Handling in TCP
Java में error handling try-catch block के माध्यम से की जाती है ताकि socket creation या connection failure जैसे issues handle किए जा सकें।
try {
Socket s = new Socket("localhost", 6666);
} catch (IOException e) {
System.out.println("Connection Error: " + e.getMessage());
}
Real World Example
जब आप browser में कोई website open करते हैं, तो internally TCP protocol का use होता है। Browser (client) और server के बीच HTTP over TCP connection establish होता है, जिससे web page data safe और proper sequence में load होता है।
Exam Notes
- TCP एक connection-oriented protocol है जो reliable data transfer सुनिश्चित करता है।
- Java में TCP के लिए मुख्य classes हैं: Socket और ServerSocket।
- Connection establish करने की process: SYN → SYN-ACK → ACK (Three-way handshake)।
- Streams data communication के लिए use होते हैं।
- TCP real-time communication के लिए नहीं बल्कि accuracy required applications के लिए best है।
- Common TCP ports: HTTP (80), HTTPS (443), FTP (21), SMTP (25)।
- TCP में flow control, error control और congestion control features होते हैं।
- Exam में अक्सर “Difference between TCP and UDP” और “Explain TCP communication process” पूछा जाता है।