"हाय, अमीगो!"

"नमस्कार, ऋषि!"

"आज के पाठ का विषय सॉकेट है।"

"आप पहले से ही जानते हैं कि नेटवर्क पर प्रत्येक कंप्यूटर का अपना विशिष्ट IP पता होता है।"

"हां।"

"अब कल्पना कीजिए कि आपके पास कई कंप्यूटर हैं, जिनमें से प्रत्येक एक दर्जन प्रोग्राम चला रहा है जो इंटरनेट का उपयोग करते हैं: स्काइप, आईसीक्यू, आदि।"

"और ये कार्यक्रम एक दूसरे के साथ संवाद करना चाहते हैं।"

"हमें उन्हें एक-दूसरे के साथ दखल देने से रोकने की जरूरत है। हमें इसे ऐसा बनाने की जरूरत है ताकि स्काइप स्काइप से कनेक्ट हो, स्लैक स्लैक से कनेक्ट हो, आदि।"

"याद रखें कि URL और वेब सर्वर के साथ इस समस्या को कैसे हल किया गया था?"

"हाँ, हमने बंदरगाह जोड़े।"

"बिल्कुल।"

"यह एक घर में छोटे कमरों का एक गुच्छा बनाने और यह कहने जैसा है कि घर एक अपार्टमेंट इमारत है। प्रत्येक बंदरगाह एक अलग अपार्टमेंट की तरह है। "

"यदि एक आईपी पता एक कंप्यूटर के लिए एक अद्वितीय पहचानकर्ता है, तो एक बंदरगाह के साथ संयुक्त एक आईपी पता कंप्यूटर में एक निश्चित 'अपार्टमेंट' के लिए एक अद्वितीय पहचानकर्ता है, जहां एक प्रोग्राम रह सकता है। "

"इस अद्वितीय स्थान को सॉकेट कहा जाता है ।"

"एक सॉकेट की अपनी अनूठी संख्या होती है जिसमें आईपी पता और पोर्ट नंबर होता है। "

"आह। दूसरे शब्दों में, एक सॉकेट कुछ वर्चुअल कंप्यूटर स्थान के लिए पहचानकर्ता है जहां एक प्रोग्राम रह सकता है? और दूसरा प्रोग्राम इस स्थान पर संदेश भेजता है, जो दो प्रोग्रामों को संवाद करने देता है?"

"मुझे नहीं पता कि आपने इसे कैसे समझा, लेकिन यह बिल्कुल सही है।"

"मेरी रोबो-भावना ने मुझे बताया।"

"बहुत बढ़िया। तो चलिए मैं आपको कुछ विवरण देता हूँ।"

"सॉकेट वास्तव में कार्यक्रमों के संचार के लिए सबसे बुनियादी और आदिम तरीका है।"

"जावा में सॉकेट के साथ काम करने के लिए दो वर्ग हैं। वे सॉकेट और सर्वर सॉकेट हैं ।"

" ServerSocket एक विशेष वर्ग है जिसका ऑब्जेक्ट सर्वर का प्रतिनिधित्व करता है, यानी वे मुझे सेवा अनुरोध देते हैं जो किसी विशेष सॉकेट पर आते हैं।"

" सॉकेट क्लास वास्तव में क्लाइंट सॉकेट है। हम इसका उपयोग किसी अन्य सॉकेट को संदेश भेजने और प्रतिक्रिया प्राप्त करने के लिए करते हैं।"

"यहां सॉकेट को संदेश भेजने का तरीका बताया गया है:"

उदाहरण
// Create a socket
Socket clientSocket = new Socket("localhost", 4444);

// Get an OutputStream
OutputStream outputStream = clientSocket.getOutputStream();
PrintWriter out = new PrintWriter(outputStream, true);
out.println("Kiss my shiny metal ass!");
out.flush();

// Read the response
InputStream inputStream = clientSocket.getInputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
String answer = in.readLine();

"यह सब इंटरनेट से फ़ाइल डाउनलोड करने के समान ही है।"

"वह, मेरा लड़का, क्योंकि वहाँ भी सॉकेट का उपयोग किया जाता है।"

"नेटवर्क से जुड़ी हर चीज़ के दिल में सॉकेट होते हैं - ठीक है, लगभग सब कुछ।"

"आप यहां अतिरिक्त जानकारी पढ़ सकते हैं "

"पाठ के लिए धन्यवाद, ऋषि।"

"मैंने अभी तक नहीं किया है। यह इच्छाधारी सोच है।"

"अब हम पता लगाएंगे कि सर्वर सॉकेट कैसे काम करता है।"

"यह थोड़ा और जटिल है।"

उदाहरण
// Create a server socket object
ServerSocket serverSocket = new ServerSocket(4444); // Port

// Process incoming connections in a loop
while (true)
{
 // The accept method waits for someone to connect
 Socket socket = serverSocket.accept();

 // Read the response
 InputStream inputStream = socket.getInputStream();
 BufferedReader in = new BufferedReader(new InputStreamReader(inputStream));
 String message = in.readLine();

 // Create a response - we'll just reverse the string
 String reverseMessage = new StringBuilder(message).reverse().toString();

 // Send the response
 OutputStream outputStream = socket.getOutputStream();
 PrintWriter out = new PrintWriter(outputStream, true);
 out.println(reverseMessage);
 out.flush();
}

"मैं आपका ध्यान कुछ बिंदुओं की ओर आकर्षित करना चाहता हूं।"

"प्वाइंट 1: एक (क्लाइंट) सॉकेट बनाने के लिए, आपको एक आईपी पता (या डोमेन नाम) और पोर्ट निर्दिष्ट करने की आवश्यकता है। सर्वर सॉकेट बनाने के लिए, आपको केवल एक पोर्ट निर्दिष्ट करने की आवश्यकता है। सर्वर सॉकेट केवल कंप्यूटर पर मौजूद है जहां यह बनाया गया था।"

"प्वाइंट 2: ServerSocket क्लास में एक स्वीकार () विधि है जो आने वाले कनेक्शन की प्रतीक्षा करती है। दूसरे शब्दों में, विधि तब तक चलेगी जब तक कि कुछ क्लाइंट सॉकेट कनेक्ट करने का प्रयास नहीं करता। फिर स्वीकार () विधि कनेक्शन को स्वीकार करती है, एक सॉकेट बनाती है संचार की अनुमति देने के लिए वस्तु, और फिर इस वस्तु को लौटाता है।"

"जावा प्रोग्रामर के दृष्टिकोण से, एक सॉकेट दो धाराएँ हैं: एक इनपुटस्ट्रीम जिससे आप संदेश/डेटा पढ़ते हैं, और एक आउटपुटस्ट्रीम जिसमें आप संदेश/डेटा लिखते हैं।"

"जब आप एक सर्वर सॉकेट बनाते हैं, तो आप वास्तव में एक पोर्ट बना रहे होते हैं, जिससे अन्य कंप्यूटरों पर क्लाइंट सॉकेट कनेक्ट हो सकते हैं। लेकिन ऐसा करने के लिए, उन्हें हमारे सॉकेट के पोर्ट नंबर और हमारे कंप्यूटर के आईपी पते को सही ढंग से निर्दिष्ट करना होगा। खैर, या इसका डोमेन नाम।"

"यहां आपके लिए एक दिलचस्प उदाहरण है। आप इसमें खुदाई करने और इसे चलाने की कोशिश कर सकते हैं:"

https://www.logicbig.com/tutorials/core-java-tutorial/http-server/http-server-basic.html

"एक सुपर आदिम वेब सर्वर लिखने के लिए एक सर्वर सॉकेट का उपयोग करने के लिए संपूर्ण बिंदु है जिसे आप केवल एक ब्राउज़र से एक्सेस कर सकते हैं।"

"वाह! एक वेब सर्वर? अच्छा! मैं इसे बहुत ध्यान से पढ़ूंगा।"

"धन्यवाद, ऋषि।"

"बस इतना ही, अमीगो। जाओ आराम करो!"