Core Interfaces: SocketImpl, DatagramSocketImpl, and NetworkInterface
Core Interfaces: SocketImpl, DatagramSocketImpl, and NetworkInterface
SocketImpl Interface (सॉकेटइम्पल इंटरफेस)
Java Networking में SocketImpl एक बहुत ही important interface है जो socket की actual working logic को define करता है। Normally जब हम Socket या ServerSocket class का use करते हैं, तो internally Java उसी SocketImpl interface का implementation call करता है ताकि data transmission और connection management handle किया जा सके।
What is SocketImpl?
SocketImpl एक abstract class है जो low-level socket operations को represent करती है। इसे हम directly use नहीं करते बल्कि यह framework को बताती है कि socket के अंदर actually data कैसे send या receive होगा। Java में हर socket का एक internal implementation होता है जो SocketImpl से derive होता है।
Role of SocketImpl
SocketImpl का main काम होता है socket के अंदर actual data transfer mechanism को manage करना। जब आप client और server के बीच connection बनाते हैं, तो SocketImpl class connection setup, input/output stream creation, और error handling जैसे कामों को perform करती है।
Key Responsibilities of SocketImpl
- Connection establish करना (connect method)
- Data भेजने और प्राप्त करने के लिए input/output stream बनाना
- Socket को bind करना किसी local address से
- Socket को close करना जब communication खत्म हो जाए
- Error या exception को handle करना
Important Methods of SocketImpl
| Method | Description |
|---|---|
connect(InetAddress address, int port) |
दिए गए address और port पर connection establish करता है। |
bind(InetAddress host, int port) |
Socket को local address और port से bind करता है। |
getInputStream() |
Input stream देता है जिससे data receive किया जा सके। |
getOutputStream() |
Output stream देता है जिससे data भेजा जा सके। |
close() |
Socket connection को बंद करता है। |
SocketImpl Example Code
Example से समझिए कि custom implementation कैसे हो सकता है:
class MySocketImpl extends SocketImpl {
@Override
protected void create(boolean stream) {
System.out.println("Socket created.");
}
@Override
protected void connect(String host, int port) {
System.out.println("Connecting to " + host + " at port " + port);
}
}
इस तरह developers अपने custom socket implementation बना सकते हैं जो network की जरूरत के हिसाब से optimize किया जा सकता है।
DatagramSocketImpl Interface (डेटाग्रामसॉकेटइम्पल इंटरफेस)
DatagramSocketImpl भी Java Networking API का एक core interface है जो UDP (User Datagram Protocol) communication के लिए use होता है। यह SocketImpl की तरह ही काम करता है लेकिन यह connectionless communication के लिए design किया गया है।
What is DatagramSocketImpl?
यह एक abstract class है जो DatagramSocket class के लिए backbone का काम करती है। जब भी कोई datagram भेजा या प्राप्त किया जाता है, DatagramSocketImpl actual packet transmission को handle करता है।
Role of DatagramSocketImpl
- UDP packets को send और receive करना
- Socket को bind करना किसी local port से
- Incoming packets को manage करना
- Datagram packets के लिए buffer memory allocate करना
Important Methods of DatagramSocketImpl
| Method | Description |
|---|---|
bind(int port, InetAddress address) |
Socket को एक specific port और address से bind करता है। |
send(DatagramPacket p) |
DatagramPacket को destination पर भेजता है। |
receive(DatagramPacket p) |
Incoming packet receive करता है। |
close() |
Socket को बंद करता है। |
Example of DatagramSocketImpl
class MyDatagramSocketImpl extends DatagramSocketImpl {
@Override
protected void create() {
System.out.println("Datagram socket created.");
}
@Override
protected void send(DatagramPacket p) {
System.out.println("Packet sent to: " + p.getAddress());
}
}
Features of DatagramSocketImpl
- Non-blocking communication support करता है
- Low latency data transfer
- Lightweight और faster transmission
- No connection overhead
क्योंकि UDP connectionless protocol है, इसलिए DatagramSocketImpl speed और efficiency के लिए design किया गया है। यही कारण है कि इसे games, video streaming, और real-time applications में use किया जाता है।
NetworkInterface Class (नेटवर्क इंटरफेस क्लास)
Java में NetworkInterface एक ऐसी class है जो system में मौजूद network devices (जैसे WiFi, Ethernet, या Virtual adapters) को represent करती है। इसका use system की networking configuration जानने के लिए किया जाता है।
What is NetworkInterface?
NetworkInterface class हमें allow करती है कि हम system में available network cards या interfaces के details को access कर सकें। इसमें हम MAC address, IP addresses, और interface name जैसी details निकाल सकते हैं।
Key Functions of NetworkInterface
- System के सभी network interfaces की list निकालना
- किसी particular interface का name और IP address पता करना
- Interface up या down है, यह check करना
- Loopback और virtual interfaces detect करना
Important Methods of NetworkInterface
| Method | Description |
|---|---|
getName() |
Interface का name देता है (जैसे eth0, wlan0)। |
getInetAddresses() |
Interface से जुड़े सभी IP addresses देता है। |
isUp() |
Check करता है कि interface currently active है या नहीं। |
getHardwareAddress() |
Interface का MAC address देता है। |
getNetworkInterfaces() |
System के सभी network interfaces की enumeration देता है। |
Example of NetworkInterface
import java.net.*;
import java.util.*;
public class NetworkInfo {
public static void main(String[] args) throws Exception {
Enumeration<NetworkInterface> nets = NetworkInterface.getNetworkInterfaces();
for (NetworkInterface netint : Collections.list(nets)) {
System.out.println("Display name: " + netint.getDisplayName());
System.out.println("Name: " + netint.getName());
}
}
}
Real-world Use of NetworkInterface
- System monitoring tools में
- IP address filtering या network configuration के लिए
- Server applications में multiple NIC handling के लिए
- Security checks और MAC validation के लिए
Comparison Table: SocketImpl vs DatagramSocketImpl vs NetworkInterface
| Feature | SocketImpl | DatagramSocketImpl | NetworkInterface |
|---|---|---|---|
| Protocol Type | TCP (Connection-oriented) | UDP (Connectionless) | Not a protocol, represents hardware interface |
| Used For | Reliable data transmission | Fast, lightweight communication | Accessing system network configuration |
| Methods | connect(), bind(), getInputStream() | send(), receive(), bind() | getName(), getInetAddresses() |
| Connection Type | Requires connection setup | No connection setup | Not applicable |
Quick Recap (संक्षिप्त पुनरावलोकन)
- SocketImpl – TCP sockets के लिए core implementation प्रदान करता है।
- DatagramSocketImpl – UDP communication के लिए responsible है।
- NetworkInterface – System के hardware network interfaces को represent करता है।
इन तीनों interfaces का main purpose है network communication को efficient, reliable और system-level controlled बनाना। यह classes Java networking को hardware और OS के करीब लाकर developers को एक flexible और robust API provide करती हैं।