Java Networking Classes and Interfaces

URL Class

Java Networking Classes: URL Class द्वारा Web पर उपलब्ध Resources को उनके Uniform Resource Location का प्रयोग करके काफी आसानी से Access किया जा सकता है। वे Applications व Applets जो कि World Wide Web के Contents को Access करके अपनी किसी जरूरत को पूरा करते हैं, URL Class उन Programs के लिए काफी उपयोगी Class होती है।

URL के Content के रूप में जो URL Specify किया जाता है, वह URL Java के एक URL Object में Convert हो जाता है। URL Object में Content के रूप में एक String होती है, जो उसमें Specify किए गए URL को Represent करती है। Web पर उपलब्ध जिस किसी भी Resource को हम Access करना चाहते हैं, उस Resource का URL हम URL Class के Object के रूप में Specify करके Web के उस Resource को अपने Computer पर एक URL Object की तरह Use कर सकते हैं।

Socket Class

Java Networking Classes: Socket Class हमें एक ReliableOrdered Stream Connection Provide करता है, जो कि एक TCP/IP Socket Connection होता है। जब Socket Create किया जाता है, तब Socket Object में Host व Destination Computer के Port Number को Specify किया जाता है।

Reliable

Client का Host से बनने वाला Connection Reliable इसलिए होता है, क्योंकि Transport Layer जो कि TCP Protocol Layer होती है, वो ये Validate करता रहता है कि Send किया गया Data Destination पर ठीक तरह से Receive हो गया है या नहीं। यदि Destination पर Data ठीक तरह से पहुंच जाता है, तो Destination Computer Source Computer को एक Acknowledgement Note भेजता है, जो Source को ये बताता है कि उसके द्वारा भेजा गया Data ठीक तरह से पहुंच गया है।

लेकिन यदि Data ठीक तरह से Destination पर नहीं पहुंचता है, तो destination Computer Source Computer को एक निश्चित समयावधि में ये Note नहीं भेजता है। यदि एक निश्चित समयावधि में Source को ये Note प्राप्त नहीं होता है, तो Source उसी Data को फिर से Destination पर Send कर देता है। जब हम किसी Socket में Data को Write कर देते हैं, तब हम ये मान सकते हैं कि Data Socket पर पहुंचेगा। यदि Data Destination पर नहीं पहुंचता है, तो Source Computer एक IOException प्राप्त करता है।

Socket Object द्वारा जो Reliable Stream Connection Provide किया जाता है, इस प्रकार के Objects का प्रयोग Interactive Applications Develop करने के लिए अधिक सफलता से किया जाता है। FTPHTTP वे Protocols हैं, जो अपने Transport Mechanism के रूप में TCP का प्रयोग करते हैं। Web पर Data को Transfer करने के लिए जो HTTP Protocol Use किया जाता है, वह भी विभिन्न Hosts के बीच Communication करने के लिए TCP का प्रयोग करता है।

Ordered Stream

Ordered Stream शब्द का मतलब ये है कि जो Data Source से Destination पर Transfer होता है, वह Data Destination पर भी ठीक उसी क्रम में पहुंचता है, जिस क्रम में Source से भेजा जाता है। हालांकि चूंकि Data Bytes की एक Stream के समान होता है, इसलिए संरक्षित नहीं होता है।

यानी यदि हम 200 Characters Destination Socket पर Write करते हैं, तो Destination Computer सभी 200 Characters को एक साथ भी Read कर सकता है और एसा भी हो सकता है कि Destination Computer पहली बार में केवल 20 Characters को ही Read करे और शेष 180 Characters को दूसरी बार में Read कर ले।

ServerSocket Class

Java Networking Classes: ये Class उस Socket-Type को Represent करता है, जिससे Establish किया जाने वाला Connection Communicate करना चाहता है। Server Socket किसी दिए गए Port पर Connection स्थापित करने के लिए इसके accept() Method का प्रयोग करके आने वाले वाली Request को Listen करता है। ServerSocket Object भी Socket Object की तरह ही Connection-Oriented, Ordered Stream Protocol (TCP) Offer करता है।

DatagramSocket Class

Java Networking Classes: ये Class एक UnreliableConnectionless Datagram Connection Provide करता है, जो कि UDP/IP Connection Socket होता है।

Unreliable

जिस तरह से Socket Class इतने Reliable होते हैं, जो ये Guarantee देते हैं कि Data अपने Destination पर पहुंचेगा, उस तरह से DatagramSocket द्वारा Provide किए जाने वाले UDP Connection इस बात की Guarantee नहीं देते हैं। Socket Class द्वारा प्रदान किए जाने वाले TCP Connections इस बात का ध्यान रखते हैं कि यदि Source से Destination पर Data पहुंचने से पहले Lost हो जाता है, तो TCP Connections Data Packets को फिर से Destination पर Transmit करते हैं। जबकि UDP Connection Data को Send करने के बाद इस बात की कोई परवाह नहीं करते हैं, कि Data Packets Destination पर पहुंच पाए हैं या नहीं।

इसका मतलब ये है कि यदि हम UDP Connection को Use करते हैं, तो इस बात का पता लगाने के लिए कि Data Packets उसके Destination पर पहुंचे हैं या नहीं, हमें फिर से किसी Acknowledgment तरीके को Use करना होता है। यदि UDP Connection द्वारा भेजा गया Data Destination पर नहीं पहुंचता है, तो UDP Connection Data को फिर से Destination पर भेजने की Try नहीं करता है।

Connectionless

Connectionless का मतलब ये होता है कि इस प्रकार के Socket का कोई Fixed Receiver नहीं होता है। यानी हम एक ही DatagramSocket का प्रयोग करके विभिन्न Hosts व Ports पर Data Packets को Send कर सकते हैं। इसलिए यदि हमें किसी निश्चित Host व Port पर Data को Send करना होता है, तब हमें Socket Connection को ही Use करना जरूरी होता है। एक बार जब एक Socket अपने Destination से Connect हो जाता है, उसके बाद वह Destination Change नहीं होता और Send किया जाने वाला Packet उसी Destination पर पहुंचता है।

जिस तरह से TCP ServerSocket होता है, उसी तरह से UDP DatagramServerSocket नहीं होता है, क्योंकि UDP Sockets किसी Specific Destination से Bound नहीं होते हैं, इसलिए जो Connection Packet को Send करता है, वही उस Packet को Listen भी कर रहा होता है।

DatagramSocket Connection से भेजा जाने वाला Data Continuous Order में नहीं होता है और हर Individual Packet की Boundary संरक्षित होती है। इस प्रक्रिया को हम एसे भी मान सकते हैं, जैसे हम किसी Fixed Size के Post Card को Mailbox में Drop करते हैं। यानी DatagramSocket Connection के हर Packet की Size निश्चित होती है।

यदि हम इस Connection का प्रयोग करके चार Packet Send करते हैं, तो इस बात की कोई Guarantee नहीं होती है, कि Destination पर भी ये Data उसी क्रम में पहुंचेंगे जिस क्रम में इन्हें Source से भेजा गया होता है। Destination पर ये Packets समान क्रम में भी पहुंच सकते हैं और भेजे गए क्रम के Reverse क्रम में भी पहुंच सकते हैं। DatagramSocket की इन कमियों को देखते हुए भी इसकी कुछ एसी विशेषताएं होती हैं, जिसकी वजह से इसे Network Programming के लिए Use किया जाता है।

  • जब हमें विभिन्न प्रकार के Hosts से Communicate करना होता है, तब हम इस Connection को Use कर हैं, क्योंकि DatagramSocket किसी विशेष Host से Bound नहीं होते हैं। हम समान DatagramSocket Object को Create करते समय उसमें अलग-अलग Hosts के InetAddress को Specify करके अलग-अलग Hosts से Communication Establish कर सकते हैं।
  • जब हम कोई एसा Application Develop कर रहे होते हैं, जिसमें हमें इस बात की चिन्ता करने की जरूरत नहीं होती है, कि Packet उसके Destination पर पहुंचा या नहीं, तब हम इस Connection को Use कर सकते हैं।

Ports

Java Networking Classes: सामान्यतया सभी Computers में एक Physical Layer होता है, जिस पर Modem या LAN Card जैसे Physical Devices Placed होते हैं, जो एक Computer को किसी दूसरे Computer या Network से Physically Connection स्थापित करने की सुविधा प्रदान करते हैं। किसी Destination Computer पर जो भी Data किसी Server से आते हैं, वे सभी Data उस Physical Connection के Through ही आते हैं। जो Data किसी Server से Client पर आता है, वह Data किसी ना किसी Particular एक Application के लिए Predefined होता है। Server से आने वाले Data को Client का कौनसा Application Access करेगा, Computer को इस बात की जानकारी Ports द्वारा होती है।

Network पर जो भी Data Transfer किया जाता है, वह Data जिस Computer के लिए भेजा जाता है, Network पर उस Computer को उसके IP Address द्वारा पहचाना जाता है। ये एक 32-Bit Number होता है। जब Server से भेजा गया Data Destination Computer पर पहुंच जाता है, तब Destination Computer का कौनसा Application उस Data को Access करने में सक्षम है, इस बात की जानकारी Destination Computer को एक अन्य 16-Bit Number द्वारा प्राप्त होती है, जिसे Port कहा जाता है।

एक Connection Based Communication (TCP) में एक Server Application एक Socket को एक Specific Port Number से Bind करके ये तय करता है कि वह Client द्वारा किस Port पर आने वाली Request को Process करेगा। इस स्थिति में जब Client उसी Port Number पर कोई Request भेजता है, तो Server उस Request को Process करता है। यानी मानलो कि Client 20000 Number के Port पर Request भेजता है और Server 20000 Number के Port को Listen करता है, तो Server, Client की Request को पूरा कर देगा।

लेकिन यदि Client 20000 Number के Port पर Request भेजता है और Server 20001 Number के Port को Listen करता है, तो वह Server, Client की Request को Process नहीं कर पाता है, क्योंकि Server, Client जिस Port पर Request भेज रहा है, Server उस Port को Read ही नहीं करता है। इसलिए Client व Server दोनों आपस में तभी Communication कर सकते हैं, जब दोनों समान Port पर Data को Send व Receive कर रहे होते हैं

चूंकि Port Number एक 16-Bit Number होता है, इसलिए इसकी Range 0 से 65535 होती है। लेकिन 0 से 1023 Number तक के Ports Special Services जैसे कि HTTP, FTP, TELNET आदि के लिए Reserved होते हैं, इसलिए हम इन Ports को अपने Application के किसी Socket से Bind नहीं कर सकते हैं। इन Ports को Well-Known Ports कहा जाता है।

वास्तव में IP Address कभी भी किसी Unique Server Program को Identify करने में सक्षम नहीं होता है, क्योंकि एक ही Computer पर एक से ज्यादा Server उपस्थित हो सकते हैं। हर IP Address किसी एक Computer को Identify करता है, जिसमें Ports होते हैं और जब हम Client या Server पर काम कर रहे होते हैं, तब हमें एक एसा Port Choose करना जरूरी होता है, जहां Client व Server दोनों Connect होने के लिए Agree होते हैं।

Computer का Port वास्तव में कोई Physical Location नहीं होता है, बल्कि केवल एक Software Abstraction होता है। Client Program को ये पता होता है कि वह किसी दूसरे Computer से Internet Protocol Address का प्रयोग करके कैसे Connect हो सकता है, लेकिन वह ये नहीं जानता है कि उसे Server Computer का कौनसा Server Program Service Provide करेगा। Port Number Client Program को इसी बात की जानकारी देता है।

Concept ये है कि यदि Client किसी Particular Port से Connect होना चाहता है, तो इसका मतलब यही है कि Client उस Port से Associated Server Application की Services प्राप्त करना चाहता है। वास्तव में विभिन्न प्रकार के Ports पर विभिन्न प्रकार की Services उपलब्ध होती हैं। अब ये बात Client Program को तय करनी होती है, कि उसे किसी Server की Services प्राप्त करनी होती है। Client Program को जिस Server की Service प्राप्त करनी होती है, Client उस Server Port से Connect हो जाता है। (Java Networking Classes)

Java Programming Language in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook Java in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

Java Programming Language in Hindi | Page: 682 | Format: PDF

BUY NOW GET DEMO REVIEWS