क्या आप रूबी में कस्टम नेटवर्क क्लाइंट्स और सर्वर्स बनाना चाहते हैं? या बस यह समझना चाहते हैं कि यह कैसे काम करता है?
तब आपको सॉकेट्स से निपटना होगा।
मेरे साथ रूबी नेटवर्क प्रोग्रामिंग के इस दौरे में शामिल हों ताकि मूल बातें सीख सकें, और रूबी का उपयोग करके अन्य सर्वरों और क्लाइंट्स से बात करना शुरू कर सकें!
सॉकेट्स क्या हैं?
सॉकेट्स कम्युनिकेशन चैनल के अंतिम बिंदु होते हैं, जिनका उपयोग क्लाइंट्स और सर्वर्स दोनों एक-दूसरे से संवाद करने के लिए करते हैं।
इनका काम करने का तरीका बहुत सरल है:
एक बार कनेक्शन स्थापित हो जाने पर, आप अपने सॉकेट में डेटा डाल सकते हैं और यह दूसरे छोर तक पहुंच जाएगा, जहां रिसीवर आने वाले डेटा को प्रोसेस करने के लिए सॉकेट से पढ़ेगा।
सॉकेट्स के प्रकार
आपके लिए कुछ प्रकार के सॉकेट्स उपलब्ध हैं, सबसे आम - TCP सॉकेट - आपको HTTP या FTP जैसी TCP-आधारित सेवाओं से कनेक्शन बनाने की अनुमति देता है।
अगर आपको UDP-आधारित प्रोटोकॉल का उपयोग करना है तो आप UDP सॉकेट का उपयोग कर सकते हैं।
अन्य प्रकार के सॉकेट्स थोड़े अधिक गूढ़ हैं, यूनिक्स सॉकेट्स TCP कनेक्शन के ओवरहेड के बिना यूनिक्स सिस्टम्स में IPC (इंटर-प्रोसेस कम्युनिकेशन) की अनुमति देते हैं।
रूबी में सॉकेट्स का उपयोग
अब जब हम जानते हैं कि सॉकेट्स हमारे लिए क्या कर सकते हैं, तो उनका उपयोग शुरू करने का समय आ गया है।
सबसे पहले, अपने प्रोग्राम में सॉकेट्स लाइब्रेरी को require करें:
require 'socket'
TCP सॉकेट बनाने के लिए आप TCPSocket क्लास का उपयोग कर सकते हैं, पैरामीटर्स के रूप में आपको डेस्टिनेशन IP एड्रेस और पोर्ट की आवश्यकता होगी।
यह एक कनेक्शन स्थापित करने का प्रयास करेगा, यदि यह स्थापित नहीं हो सकता तो आपको Errno::ECONNREFUSED एरर मिलेगा।
socket = TCPSocket.new('google.com', 80)
अब आप अपने सॉकेट के माध्यम से संदेश भेजने में सक्षम होंगे, आपको उस प्रोटोकॉल का पालन करना होगा जिसके साथ आप संचार कर रहे हैं ताकि दूसरा छोर आपको समझ सके।
socket.write "GET / HTTP/1.1" socket.write "\r\n\r\n"
आप जिन विधियों का उपयोग करेंगे उनमें से कई TCPSocket की पैरेंट क्लासेज से आती हैं।

सर्वर से प्रतिक्रिया पढ़ने के लिए आप recv विधि का उपयोग कर सकते हैं।
आपको पैरामीटर के रूप में उन बाइट्स की संख्या पास करनी होगी जिन्हें आप सॉकेट से पढ़ना चाहते हैं:
puts socket.recv(100)
यहां एक छोटी समस्या है, हो सकता है कि आपको कोई डेटा वापस न मिले और आपका ऐप कुछ भी नहीं कर रहा हुआ प्रतीत हो।
कारण यह है कि यदि पढ़ने के लिए पर्याप्त डेटा नहीं है, तो आपका प्रोग्राम 'ब्लॉक' हो जाएगा।
इसका मतलब है यह तब तक इंतजार करेगा जब तक कुछ डेटा उपलब्ध न हो जाए या सर्वर कनेक्शन बंद न कर दे।
आप जिस प्रोटोकॉल के साथ काम कर रहे हैं, उसके आधार पर आप पढ़े जाने वाले डेटा की मात्रा को बढ़ाना या घटाना चाह सकते हैं।
यदि ब्लॉकिंग आपके लिए एक समस्या है, तो IO क्लास से readpartial और read_nonblock विधियों को देखें।
TCP सर्वर कैसे लिखें
आइए एक सर्वर बनाएं! प्रक्रिया क्लाइंट लिखने के समान है, लेकिन हमें सॉकेट को बाइंड करने के लिए एक इंटरफेस बताना होगा, फिर उस पर लिसन करना होगा, और अंत में स्वीकार करना होगा आने वाले कनेक्शन्स को।
TCPServer क्लास पहले दो काम हमारे लिए पहले से ही करती है।
यहां एक उदाहरण है:
require 'socket' socket = TCPServer.new('0.0.0.0', 8080) client = socket.accept puts "New client! #{client}" client.write("Hello from server") client.close
हमारा उदाहरण सर्वर पोर्ट 8080 पर लिसन करेगा और कनेक्ट होने वाले क्लाइंट को एक संदेश के साथ अभिवादन करेगा।
ध्यान दें कि हम केवल एक क्लाइंट को स्वीकार कर सकते हैं और प्रोग्राम समाप्त हो जाएगा।
एकाधिक क्लाइंट्स को स्वीकार करना
एकाधिक क्लाइंट्स को स्वीकार करने और प्रतिक्रिया देने में सक्षम होने के लिए, हमें एक लूप और कुछ थ्रेड्स की आवश्यकता होगी।
उदाहरण:
require 'socket' PORT = 8081 socket = TCPServer.new('0.0.0.0', PORT) def handle_connection(client) puts "New client! #{client}" client.write("Hello from server") client.close end puts "Listening on #{PORT}. Press CTRL+C to cancel." loop do client = socket.accept Thread.new { handle_connection(client) } end
यह एक नया सर्वर शुरू करना चाहिए जो तब तक लिसन करता रहे जब तक आप इसे रोक नहीं देते।
यदि आप इसे अगले स्तर पर ले जाना चाहते हैं और रूबी में एक वेब सर्वर लिखना सीखना चाहते हैं तो इस ब्लॉग पोस्ट को पढ़ें।
निष्कर्ष
आपने सीखा कि TCP सॉकेट्स क्या हैं, वे कैसे काम करते हैं और कैसे आप TCPServer और TCPSocket जैसी कुछ रूबी क्लासेज का उपयोग करके रूबी एप्लिकेशन बना सकते हैं जो इंटरनेट पर अन्य मशीनों के साथ इंटरैक्ट कर सकते हैं।
रूबी नेटवर्क प्रोग्रामिंग के साथ खेलना मजेदार है!
अब जाओ कुछ अच्छा बनाओ और इसे सभी के साथ शेयर करो कमेंट सेक्शन में 🙂
मेरे न्यूज़लेटर से जुड़ना न भूलें अगर आप अपने रूबी स्किल्स को बेहतर बनाते रहना चाहते हैं!