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

"हॅलो, ऋषी!"

"आजच्या धड्याचा विषय सॉकेट्स आहे."

"तुम्हाला आधीच माहित आहे की नेटवर्कवरील प्रत्येक संगणकाचा स्वतःचा विशिष्ट IP पत्ता असतो."

"हो."

"आता अशी कल्पना करा की तुमच्याकडे अनेक संगणक आहेत, प्रत्येकामध्ये इंटरनेटवर प्रवेश करणारे डझनभर प्रोग्राम आहेत: स्काईप, ICQ, इ."

"आणि हे कार्यक्रम एकमेकांशी संवाद साधू इच्छितात."

"आम्हाला त्यांना एकमेकांमध्ये ढवळाढवळ करण्यापासून थांबवण्याची गरज आहे. आम्हाला ते बनवायचे आहे जेणेकरून स्काईप स्काईपशी कनेक्ट होईल, स्लॅक स्लॅकशी कनेक्ट होईल इ.

"यूआरएल आणि वेब सर्व्हरसह ही समस्या कशी सोडवली गेली ते लक्षात ठेवा?"

"हो, आम्ही पोर्ट जोडले."

"नक्की."

"हे घरामध्ये छोट्या खोल्या बनवण्यासारखे आहे आणि घर एक अपार्टमेंट इमारत आहे असे म्हणण्यासारखे आहे. प्रत्येक बंदर स्वतंत्र अपार्टमेंटसारखे आहे. "

"जर आयपी अॅड्रेस कॉम्प्युटरसाठी युनिक आयडेंटिफायर असेल, तर पोर्टसह एकत्रित केलेला आयपी अॅड्रेस हा कॉम्प्युटरमधील विशिष्ट 'अपार्टमेंट'साठी एक युनिक आयडेंटिफायर आहे, जेथे प्रोग्राम राहू शकतो. "

"या अद्वितीय स्थानाला सॉकेट म्हणतात ."

"सॉकेटचा स्वतःचा अनन्य क्रमांक असतो ज्यामध्ये IP पत्ता आणि पोर्ट क्रमांक असतो. "

"आह. दुसऱ्या शब्दांत, सॉकेट हे काही व्हर्च्युअल कॉम्प्युटर स्थानासाठी एक ओळखकर्ता आहे जेथे प्रोग्राम राहू शकतो? आणि दुसरा प्रोग्राम या स्थानावर संदेश पाठवतो, ज्यामुळे दोन प्रोग्राम संवाद साधू शकतात?"

"मला माहित नाही तुला ते कसे समजले, पण ते अगदी बरोबर आहे."

"माझ्या रोबो सेन्सने मला सांगितले."

"छान. मग मी तुला काही तपशील देतो."

"सॉकेट्स हे प्रोग्राम्ससाठी संवाद साधण्यासाठी सर्वात मूलभूत आणि प्राथमिक मार्ग आहेत."

"जावाकडे सॉकेटसह काम करण्यासाठी दोन वर्ग आहेत. ते सॉकेट आणि सर्व्हरसॉकेट आहेत ."

" सर्व्हरसॉकेट हा एक विशेष वर्ग आहे ज्यांचे ऑब्जेक्ट सर्व्हरचे प्रतिनिधित्व करतात, म्हणजे ते मला विशिष्ट सॉकेटवर आलेल्या सेवा विनंत्या करू देतात."

" सॉकेट क्लास खरं तर क्लायंट सॉकेट आहे. आम्ही त्याचा वापर दुसर्‍या सॉकेटला संदेश पाठवण्यासाठी आणि प्रतिसाद प्राप्त करण्यासाठी करतो."

"सॉकेटवर संदेश कसा पाठवायचा ते येथे आहे:"

उदाहरण
// 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: (क्लायंट) सॉकेट तयार करण्यासाठी, तुम्हाला IP पत्ता (किंवा डोमेन नाव) आणि पोर्ट निर्दिष्ट करणे आवश्यक आहे. सर्व्हर सॉकेट तयार करण्यासाठी, तुम्हाला फक्त एक पोर्ट निर्दिष्ट करणे आवश्यक आहे. सर्व्हर सॉकेट फक्त संगणकावर अस्तित्वात आहे जेथे ते तयार केले गेले."

"पॉइंट 2: सर्व्हरसॉकेट क्लासमध्ये एक स्वीकार() पद्धत आहे जी इनकमिंग कनेक्शनची प्रतीक्षा करते. दुसऱ्या शब्दांत, काही क्लायंट सॉकेट कनेक्ट करण्याचा प्रयत्न करेपर्यंत ही पद्धत कायमची चालेल. नंतर स्वीकार() पद्धत कनेक्शन स्वीकारते, सॉकेट तयार करते. संप्रेषणास परवानगी देण्यासाठी ऑब्जेक्ट, आणि नंतर हा ऑब्जेक्ट परत करतो."

"जावा प्रोग्रामरच्या दृष्टिकोनातून, सॉकेट दोन प्रवाह आहेत: एक इनपुटस्ट्रीम ज्यामधून तुम्ही संदेश/डेटा वाचता आणि आउटपुटस्ट्रीम ज्यावर तुम्ही संदेश/डेटा लिहिता."

"जेव्हा तुम्ही सर्व्हर सॉकेट तयार करता, तेव्हा तुम्ही प्रत्यक्षात एक पोर्ट बनवत असता ज्याला इतर कॉम्प्युटरवरील क्लायंट सॉकेट कनेक्ट करू शकतात. पण हे करण्यासाठी, त्यांनी आमच्या सॉकेटचा पोर्ट नंबर आणि आमच्या कॉम्प्युटरचा IP पत्ता अचूकपणे निर्दिष्ट केला पाहिजे. ठीक आहे, किंवा त्याचे डोमेन नाव."

"तुमच्यासाठी हे एक मनोरंजक उदाहरण आहे. तुम्ही त्यात खोदून ते चालवण्याचा प्रयत्न करू शकता:"

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

"तेथे संपूर्ण मुद्दा म्हणजे सुपर प्रिमिटिव्ह वेब सर्व्हर लिहिण्यासाठी सर्व्हर सॉकेट वापरणे ज्यामध्ये तुम्ही ब्राउझरवरून सहज प्रवेश करू शकता."

"व्वा! वेब सर्व्हर? छान! मी त्याचा खूप काळजीपूर्वक अभ्यास करेन."

"धन्यवाद, ऋषी."

"एवढेच आहे, अमिगो. जा आराम कर!"