डेवलपर के लिए Linux नेटवर्किंग और TCP/IP · पाठ

UDP क्लाइंट-सर्वर सॉकेट

ऐसे अनुप्रयोगों के लिए UDP सॉकेट का उपयोग करके कनेक्शन-विहीन, डेटाग्राम-आधारित संचार विकसित करें जहाँ विश्वसनीयता से अधिक गति को प्राथमिकता दी जाती है।

पाठ 3, कुल 4 में से12 चरण

UDP क्लाइंट-सर्वर सॉकेट, CoddyKit पर डेवलपर के लिए Linux नेटवर्किंग और TCP/IP का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह डेवलपर के लिए Linux नेटवर्किंग और TCP/IP सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। डेवलपर के लिए Linux नेटवर्किंग और TCP/IP पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

UDP क्या है

UDP में आपका स्वागत है! जहाँ TCP ने विश्वसनीय, कनेक्शन-आधारित संचार पर ध्यान दिया, वहीं UDP (यूज़र डेटाग्राम प्रोटोकॉल) एक अलग तरीका अपनाता है: कनेक्शन-रहित और अविश्वसनीय।

UDP को पोस्टकार्ड भेजने जैसा समझिए। आप संदेश लिखकर भेज देते हैं, लेकिन आपको पता नहीं होता कि वह पहुँचा या नहीं, किस क्रम में पहुँचा, या रास्ते में खो गया। यह तेज़ है, लेकिन इसकी कोई गारंटी नहीं होती।

UDP बनाम TCP: मुख्य अंतर

UDP का उपयोग कब करना है, यह समझने के लिए TCP से इसके मुख्य अंतर जानना आवश्यक है:

  • कनेक्शन-रहित: डेटा भेजने से पहले हैंडशेक की आवश्यकता नहीं होती।
  • अविश्वसनीय: डिलीवरी, क्रम या डुप्लिकेट से सुरक्षा की कोई गारंटी नहीं होती।
  • तेज़: कनेक्शन स्थापित करने और विश्वसनीयता जाँचने की आवश्यकता न होने से अतिरिक्त भार कम होता है।
  • डेटाग्राम: डेटा स्वतंत्र पैकेटों में भेजा जाता है जिन्हें डेटाग्राम कहते हैं।

UDP उन एप्लिकेशन के लिए उपयुक्त है जहाँ गारंटीकृत डिलीवरी से अधिक गति महत्वपूर्ण होती है।

UDP का उपयोग कब करें

UDP उन परिस्थितियों में उपयोगी होता है जहाँ कुछ डेटा खो जाना स्वीकार्य हो या एप्लिकेशन स्वयं विश्वसनीयता संभालते हों। इसके सामान्य उपयोग हैं:

  • ऑनलाइन गेमिंग: रियल-टाइम गतिविधियों के लिए गति अत्यंत महत्वपूर्ण होती है।
  • वॉइस/वीडियो स्ट्रीमिंग: दोबारा भेजे जाने की प्रतीक्षा करने से थोड़ी देरी बेहतर होती है।
  • DNS (डोमेन नेम सिस्टम): त्वरित खोज को प्राथमिकता दी जाती है।
  • SNMP (सिंपल नेटवर्क मैनेजमेंट प्रोटोकॉल): नेटवर्क उपकरणों की निगरानी के लिए।

ये एप्लिकेशन पूर्ण डेटा अखंडता की अपेक्षा कम विलंबता को प्राथमिकता देते हैं।

UDP के लिए Python का `socket` मॉड्यूल

Python का socket मॉड्यूल UDP सहित नेटवर्क प्रोग्रामिंग के लिए आपका उपकरण है। UDP सॉकेट बनाने के लिए आप एड्रेस फ़ैमिली और सॉकेट प्रकार निर्दिष्ट करते हैं।

  • socket.AF_INET: IPv4 पतों के लिए।
  • socket.SOCK_DGRAM: UDP सॉकेट (डेटाग्राम सॉकेट) निर्दिष्ट करता है।

आइए देखते हैं कि इसे कैसे बनाया जाता है।

UDP सॉकेट बनाना

यहाँ एक बुनियादी UDP सॉकेट बनाने का तरीका है। ध्यान दें कि यह TCP से बहुत मिलता-जुलता है, लेकिन इसमें SOCK_DGRAM का उपयोग होता है।

UDP सॉकेट को शुरू करके फिर बंद होते देखने के लिए यह कोड चलाएँ।

import socket

def main():
    # AF_INET for IPv4, SOCK_DGRAM for UDP
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print("UDP socket created successfully!")
    udp_socket.close()
    print("Socket closed.")

if __name__ == "__main__":
    main()

UDP सर्वर: किसी पते से बाइंड करना

UDP सर्वर को आने वाले डेटाग्राम सुनने के लिए किसी विशिष्ट IP पते और पोर्ट से bind() करना होता है। इससे ऑपरेटिंग सिस्टम को पता चलता है कि सर्वर किस स्थान से डेटा प्राप्त करने की अपेक्षा कर रहा है।

TCP के विपरीत, UDP कनेक्शनरहित होने के कारण इसमें listen() या accept() नहीं होता। सर्वर बस डेटा प्राप्त करने की प्रतीक्षा करता है।

import socket

HOST = '127.0.0.1' # Localhost
PORT = 12345       # Port to listen on

def main():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.bind((HOST, PORT))
    print(f"UDP server bound to {HOST}:{PORT}")
    udp_socket.close()

if __name__ == "__main__":
    main()

UDP सर्वर: डेटा प्राप्त करना

UDP सर्वर डेटा प्राप्त करने के लिए recvfrom() विधि का उपयोग करता है। यह डेटा और प्रेषक का पता, दोनों लौटाती है।

नीचे दिया गया सर्वर एक संदेश की प्रतीक्षा करेगा, उसे प्रदर्शित करेगा और फिर बंद हो जाएगा। इसे चलाकर देखें और फिर अगले दृश्य में क्लाइंट कोड चलाएँ!

import socket

HOST = '127.0.0.1'
PORT = 12345

def main():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.bind((HOST, PORT))
    print(f"UDP server listening on {HOST}:{PORT}")

    print("Waiting for message...")
    data, addr = udp_socket.recvfrom(1024) # Buffer size 1024 bytes
    print(f"Received '{data.decode()}' from {addr}")
    udp_socket.close()

if __name__ == "__main__":
    main()

UDP क्लाइंट: डेटा भेजना

UDP क्लाइंट डेटा भेजने के लिए sendto() विधि का उपयोग करता है। इसमें डेटा (बाइट्स के रूप में) और गंतव्य का पता (IP और पोर्ट) तर्कों के रूप में दिए जाते हैं।

क्लाइंट को किसी विशिष्ट पोर्ट से bind करने की आवश्यकता नहीं होती, जब तक कि उसे उसी पोर्ट पर उत्तर प्राप्त करने की अपेक्षा न हो। एक अस्थायी पोर्ट अपने-आप निर्धारित हो जाता है।

पिछले दृश्य से सर्वर शुरू करने के बाद इस क्लाइंट को चलाएँ!

import socket

SERVER_HOST = '127.0.0.1'
SERVER_PORT = 12345

def main():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    message = "Hello UDP Server!"
    udp_socket.sendto(message.encode(), (SERVER_HOST, SERVER_PORT))
    print(f"Sent '{message}' to {SERVER_HOST}:{SERVER_PORT}")
    udp_socket.close()

if __name__ == "__main__":
    main()

पूर्ण UDP इको सर्वर और क्लाइंट

आइए एक सरल UDP इको सर्वर बनाएँ, जो संदेश प्राप्त करके उसे क्लाइंट को वापस भेजे, और ऐसा क्लाइंट बनाएँ, जो संदेश भेजकर इको की प्रतीक्षा करे।

पहले सर्वर चलाएँ। फिर क्लाइंट को किसी अलग टर्मिनल या निष्पादन परिवेश में चलाएँ।

import socket

# --- UDP Echo Server ---
HOST = '127.0.0.1'
PORT = 12345

def run_server():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    udp_socket.bind((HOST, PORT))
    print(f"Server listening on {HOST}:{PORT}")

    try:
        while True:
            data, addr = udp_socket.recvfrom(1024)
            print(f"Received '{data.decode()}' from {addr}")
            # Echo back to the client
            udp_socket.sendto(b"Echo: " + data, addr)
            print(f"Echoed back to {addr}")
    except KeyboardInterrupt:
        print("Server shutting down.")
    finally:
        udp_socket.close()

if __name__ == "__main__":
    run_server()

पूर्ण UDP इको क्लाइंट

अब यह क्लाइंट कोड चलाएँ। यह सक्रिय सर्वर को एक संदेश भेजेगा और फिर इको किए गए उत्तर को प्राप्त करने की प्रतीक्षा करेगा।

यह UDP संचार चक्र का एक पूर्ण और सरल उदाहरण प्रस्तुत करता है।

import socket

# --- UDP Echo Client ---
SERVER_HOST = '127.0.0.1'
SERVER_PORT = 12345

def run_client():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    message = "Hello from UDP Client!"
    
    udp_socket.sendto(message.encode(), (SERVER_HOST, SERVER_PORT))
    print(f"Sent '{message}' to {SERVER_HOST}:{SERVER_PORT}")

    print("Waiting for echo...")
    data, addr = udp_socket.recvfrom(1024)
    print(f"Received echo '{data.decode()}' from {addr}")
    udp_socket.close()

if __name__ == "__main__":
    run_client()

UDP क्लाइंट-सर्वर जाँच

UDP सॉकेट के बारे में निम्नलिखित में से कौन-सा कथन TRUE है?

पुनरावलोकन: UDP सॉकेट

इस पाठ में आपने UDP सॉकेट की दुनिया को समझा और TCP से उनके मूलभूत अंतर जाने।

  • UDP कनेक्शनरहित और अविश्वसनीय है तथा गति को प्राथमिकता देता है।
  • यह संचार के लिए डेटाग्राम का उपयोग करता है।
  • Python का socket मॉड्यूल और SOCK_DGRAM UDP सॉकेट बनाते हैं।
  • सर्वर bind() और recvfrom() का उपयोग करते हैं।
  • क्लाइंट sendto() का उपयोग करते हैं।

अब आप अपने अनुप्रयोग की आवश्यकताओं के लिए सही प्रोटोकॉल चुन सकते हैं!

शुरुआत निःशुल्क

एआई शिक्षक के साथ डेवलपर के लिए Linux नेटवर्किंग और TCP/IP सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “UDP क्लाइंट-सर्वर सॉकेट” पाठ निःशुल्क है?

हाँ—“UDP क्लाइंट-सर्वर सॉकेट” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और डेवलपर के लिए Linux नेटवर्किंग और TCP/IP पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। डेवलपर के लिए Linux नेटवर्किंग और TCP/IP पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“UDP क्लाइंट-सर्वर सॉकेट” में मैं क्या सीखूँगा?

ऐसे अनुप्रयोगों के लिए UDP सॉकेट का उपयोग करके कनेक्शन-विहीन, डेटाग्राम-आधारित संचार विकसित करें जहाँ विश्वसनीयता से अधिक गति को प्राथमिकता दी जाती है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ डेवलपर के लिए Linux नेटवर्किंग और TCP/IP का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या डेवलपर के लिए Linux नेटवर्किंग और TCP/IP शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर डेवलपर के लिए Linux नेटवर्किंग और TCP/IP शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“UDP क्लाइंट-सर्वर सॉकेट” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस डेवलपर के लिए Linux नेटवर्किंग और TCP/IP पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर डेवलपर के लिए Linux नेटवर्किंग और TCP/IP पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Socket API का परिचय
  2. TCP क्लाइंट-सर्वर सॉकेट
  3. UDP क्लाइंट-सर्वर सॉकेट
  4. नॉन-ब्लॉकिंग सॉकेट और select()
← डेवलपर के लिए Linux नेटवर्किंग और TCP/IP पर वापस जाएँ