Introduction to Socket Programming

Introduction to Socket Programming: Internet पर विभिन्न Computers आपस में TCP/IP Protocol द्वारा Connected रहते हैं। 1980 में U. S. Government की Advance Research Projects Agency (ARPA) ने University Of California जो कि Berkeley में स्थित है, को TCP/IP Protocol Suite के समान एक काम करने वाला एक ऐसा Suite Create करने का काम सौंपा, जिसे UNIX Platform पर Implement किया जा सके। उस University ने जो Suite Develop किया उसे Socket Interface नाम दिया गया, जिसे हम सामान्‍यतया Berkeley-Socket Interface या केवल Berkeley Sockets के नाम से जानते हैं।

Socket केवल एक Abstraction होता है, जो दो Computers के बीच के Connection के Terminal को Represent करता है। ये TCP/IP Network में एक Connection Point को Represent करता है। किसी दिए गए Connection में हर Computer पर एक Socket होता है और हम ये मान सकते हैं कि दोनों Computers के बीच एक Virtual या आभासी Cable होती है, जिससे दोनों Computers के Sockets आपस में Connect होते हैं।

Socket Interface में जब दो Computers आपस में Communication करना चाहते हैं, तब दोनों Computers एक Socket का प्रयोग करते हैं। दोनों Computers में से किसी एक Computer को Server बनाया जाता है, जो कि एक Socket को Open करता है और Connection के लिए Wait करता है, यानी किसी Client के Connection को Listen करता है।

दूसरे Computer को Client के रूप में Use किया जाता है और ये Server से Connection स्थापित करने के लिए Server के Socket को Call करता है। Connection को Establish करने के लिए Client को केवल उसके Server के IP AddressPort Number की ही जरूरत होती है।

TCP/IP Network के हर Computer का एक Unique IP Address होता है और उस IP Address में Ports एक Individual Connection को Represent करता है। एक Computer में आने वाले Data को प्राप्त करने के लिए कई Ports होते हैं, लेकिन Data को Computer का केवल वही Port Listen करता है, जिससे Data को  Associate करके भेजा गया होता है।

जावा में किसी दूसरे Computer से Connection Establish करने के लिए हम एक Socket Create करते हैं। फिर उस Socket के लिए एक InputStream व एक OutputStream को Open किया जाता है। ऐसा करने पर हम Connection को एक I/O Stream Object की तरह Treat कर सकते हैं। जावा में दो Stream-Based Socket Classes हैं: ServerSocket Class का प्रयोग एक Server Program किसी Incoming Connection को Listen करने के लिए करता है और Socket Class का प्रयोग एक Client Program Connection को Initialize करने के लिए करता है।

जब एक बार एक Client एक Socket Connection बना लेता है, तब ServerSocket अपने accept() Method का प्रयोग करके Client Socket से सम्बंधित एक Socket Return करता है, जिसका प्रयोग करके Server Side में Communication Perform होता है। इतना होने के बाद हमारे पास एक वास्तविक Socket to Socket Connection होता है और हम दोनों Ends को समान तरीके से Treat करते हैं क्योंकि दोनों Ends पर समान Object ही होता है।

अब हम हर Socket पर InputStream Object के साथ getInputStream() Method व OutputStream Object के साथ getOutputStream() Method का प्रयोग करके आपस में Communication कर सकते हैं। Socket में Write किए जाने वाले Data को व Socket से प्राप्त किए जाने वाले Data को यानी दोनों ही प्रकार के Data को हमें एक Buffer में Store करने के बाद Use करना होता है।

ServerSocket तब तक Wait करता है जब तक कि कोई Client Machine इससे Connect नहीं होता। जब कोई Client किसी Wait कर रहे Server से Connect होता है, तब Server उस Client को एक Actual Socket Return करता है। ServerSocket वास्तव में स्वयं एक Socket नहीं होता है, बल्कि जब कोई Client इस ServerSocket से Connect होता है, तब ये एक Socket Object Create करता है।

ServerSocket कोई Physical Server Create करता है या Host Computer पर किसी Socket को Listen करता है। ये Socket किसी Incoming Connection को Listen करता है और फिर accept() Method का प्रयोग करके एक “Established” Socket Return करता है, जिसमें LocalRemote End Points Defined होते हैं।

इस तरीके की मुख्‍य बात ये है कि Listening Socket व Established Socket दोनों ही समान Server Socket से Associated होते हैं। जो Listening Socket होता है, वह केवल किसी नए Connection की Request को ही Accept करता है किसी Data Packet को नहीं। इसलिए ServerSocket जितना Physically महत्वपूर्ण होता है, उतना Programmatically नहीं होता है।

जब हम कोई Server Socket Create करते हैं, तब हम इसे एक Port Number देते हैं। हमें इसे किसी प्रकार का कोई IP Address नहीं देना होता है, क्योंकि ये पहले से ही उसी Computer पर होता है, जो Server को Represent करता है। लेकिन जब हम Socket Create करते हैं, तब हमें उस Host Computer का IP AddressPort Number दोनों Specify करना होता है, जिससे हम Connect होना चाहते हैं। Server ServerSocket.accept() Statement द्वारा जो Socket Return करता है, उसमें पहले से ही ये सभी Information होते हैं।

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