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

Socket API का परिचय

सॉकेट प्रोग्रामिंग की मूल अवधारणाओं का अन्वेषण करें, जिसमें सॉकेट प्रकार, पते और सामान्य API कॉल शामिल हैं।

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

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

नेटवर्क सॉकेट क्या होते हैं

सॉकेट प्रोग्रामिंग में आपका स्वागत है! सॉकेट नेटवर्क संचार की एक महत्वपूर्ण अवधारणा है। इसे नेटवर्क पर चल रहे दो प्रोग्रामों के बीच दो-तरफ़ा संचार लिंक के एक छोर के रूप में समझिए।

यह दीवार पर लगे फ़ोन जैक जैसा है। फ़ोन को उससे जोड़कर आप फ़ोन नेटवर्क से जुड़ते हैं। इसी तरह, प्रोग्राम कंप्यूटर नेटवर्क पर जुड़ने और संचार करने के लिए सॉकेट का उपयोग करते हैं।

Python का सॉकेट मॉड्यूल

Python अपने अंतर्निहित socket मॉड्यूल के ज़रिए सॉकेट प्रोग्रामिंग को आसान बनाता है। यह मॉड्यूल सॉकेट बनाने और प्रबंधित करने के लिए आवश्यक सभी फ़ंक्शन और क्लास उपलब्ध कराता है।

आमतौर पर आप इसे अपनी स्क्रिप्ट की शुरुआत में इम्पोर्ट करते हैं। आइए देखते हैं कि शुरुआत कैसे की जाती है:

import socket

# Now you can use socket functions!

सॉकेट एड्रेस फ़ैमिली

सॉकेट बनाने से पहले, हमें उसकी एड्रेस फ़ैमिली निर्दिष्ट करनी होती है। इससे यह निर्धारित होता है कि सॉकेट किस प्रकार के पतों के साथ काम कर सकता है।

  • socket.AF_INET: IPv4 पतों के लिए उपयोग होता है, जैसे 192.168.1.1। यह सबसे सामान्य है।
  • socket.AF_INET6: IPv6 पतों के लिए उपयोग होता है।
  • socket.AF_UNIX: एक ही मशीन पर चल रही प्रक्रियाओं के बीच संचार के लिए उपयोग होता है।

सामान्य इंटरनेट संचार के लिए हम मुख्य रूप से AF_INET का उपयोग करेंगे।

सॉकेट के प्रकार: स्ट्रीम बनाम डेटाग्राम

इसके बाद हम सॉकेट का प्रकार चुनते हैं, जो संचार की शैली निर्धारित करता है।

  • socket.SOCK_STREAM: यह TCP (ट्रांसमिशन कंट्रोल प्रोटोकॉल) का उपयोग करता है। फ़ोन कॉल की तरह यह विश्वसनीय, क्रमबद्ध और कनेक्शन-आधारित होता है। डेटा ठीक उसी क्रम में पहुँचता है जिस क्रम में भेजा गया था।
  • socket.SOCK_DGRAM: यह UDP (यूज़र डेटाग्राम प्रोटोकॉल) का उपयोग करता है। पोस्टकार्ड भेजने की तरह यह कनेक्शन-रहित और कम विश्वसनीय होता है। डेटा गलत क्रम में पहुँच सकता है या बिल्कुल नहीं पहुँच सकता।

अधिकांश सामान्य एप्लिकेशन, विशेष रूप से वेब ब्राउज़िंग, SOCK_STREAM का उपयोग करते हैं।

अपना पहला सॉकेट बनाना

अब इन बातों को साथ जोड़कर एक बुनियादी सॉकेट ऑब्जेक्ट बनाते हैं। हम एड्रेस फ़ैमिली (IPv4) और सॉकेट प्रकार (TCP स्ट्रीम) निर्दिष्ट करेंगे।

यह पंक्ति एक निष्क्रिय सॉकेट बनाती है, जिसे क्लाइंट या सर्वर की भूमिका के लिए कॉन्फ़िगर किया जा सकता है।

import socket

# Create a TCP/IP socket
my_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print(f"Socket created: {my_socket}")
# Don't forget to close sockets when done!
my_socket.close()

सॉकेट को बाइंड करना (सर्वर पक्ष)

सर्वर के लिए सॉकेट को उस पते की आवश्यकता होती है जिस पर वह कनेक्शन के लिए प्रतीक्षा करेगा। इसे बाइंड करना कहते हैं। आप अपने सॉकेट को एक IP पता और पोर्ट संख्या देते हैं।

क्लाइंट आपके सर्वर से जुड़ने के लिए इस पते और पोर्ट का उपयोग करेंगे। पोर्ट एक ऐसी संख्या है जो किसी होस्ट पर मौजूद विशिष्ट एप्लिकेशन या सेवा की पहचान करती है।

import socket

HOST = '127.0.0.1'  # Localhost
PORT = 65432        # Port to listen on (> 1023 for non-privileged)

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    print(f"Socket bound to {HOST}:{PORT}")
    # The socket is now bound, but not yet listening or accepting.

कनेक्शन के लिए सुनना

बाइंड करने के बाद, सर्वर सॉकेट को आने वाले क्लाइंट कनेक्शन के लिए listen करना होता है। listen() विधि सॉकेट को सर्वर मोड में डालती है।

listen() का तर्क बैकलॉग होता है। यह उन अस्वीकार न किए गए कनेक्शनों की अधिकतम संख्या है जिन्हें नए कनेक्शन अस्वीकार करने से पहले सिस्टम अनुमति देगा।

import socket

HOST = '127.0.0.1'
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen(1) # Allow 1 pending connection
    print(f"Server listening on {HOST}:{PORT}")
    # Now the server is ready to accept a connection.

कनेक्शन स्वीकार करना

जब कोई क्लाइंट जुड़ने का प्रयास करता है, तो सर्वर accept() विधि का उपयोग करता है। यह विधि तब तक रुकती है जब तक कोई क्लाइंट जुड़ नहीं जाता।

इसके बाद यह क्लाइंट से कनेक्शन दर्शाने वाला एक नया सॉकेट ऑब्जेक्ट (conn) और क्लाइंट का पता (addr) लौटाती है। क्लाइंट के साथ पूरा संचार इसी नए सॉकेट के माध्यम से होता है।

import socket

HOST = '127.0.0.1'
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen(1)
    print("Waiting for a client connection...")
    # This part would typically be in a loop in a real server
    conn, addr = s.accept()
    with conn:
        print(f"Connected by {addr}")
        # Now 'conn' can be used to send/receive data to/from the client.

सर्वर से जुड़ना (क्लाइंट पक्ष)

क्लाइंट सॉकेट बाइंड नहीं करता; इसके बजाय, वह किसी विशिष्ट IP पते और पोर्ट पर सुन रहे सर्वर से कनेक्शन स्थापित करने के लिए connect() विधि का उपयोग करता है।

कनेक्शन स्थापित होने के बाद, क्लाइंट तुरंत डेटा भेजना और प्राप्त करना शुरू कर सकता है। डेटा का आदान-प्रदान हमेशा बाइट्स के रूप में होता है।

import socket

HOST = '127.0.0.1'
PORT = 65432

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    try:
        s.connect((HOST, PORT))
        print(f"Connected to server at {HOST}:{PORT}")
        s.sendall(b'Hello from client!')
        data = s.recv(1024) # Receive up to 1024 bytes
        print(f"Received: {data.decode()}")
    except ConnectionRefusedError:
        print("Error: Server not running or not listening.")

डेटा भेजना और प्राप्त करना

कनेक्शन स्थापित हो जाने के बाद, sendall() और recv() का उपयोग करके डेटा का आदान-प्रदान किया जा सकता है।

  • socket.sendall(data): बाइट-जैसे data का पूरा डेटा जुड़े हुए सॉकेट को भेजता है। यह तब तक भेजता रहता है जब तक पूरा डेटा भेज न दिया जाए या कोई त्रुटि न हो जाए।
  • socket.recv(bufsize): सॉकेट से डेटा प्राप्त करता है। bufsize एक बार में प्राप्त किए जा सकने वाले बाइट्स की अधिकतम संख्या है। कनेक्शन बंद होने पर यह एक खाली बाइट्स ऑब्जेक्ट (b'') लौटाता है।

सॉकेट API की त्वरित जाँच

Python के socket मॉड्यूल और सॉकेट प्रकारों के बारे में निम्नलिखित में से कौन-सा कथन TRUE है?

पुनरावलोकन: सॉकेट का परिचय

बहुत अच्छा! इस पाठ में आपने Python के साथ सॉकेट प्रोग्रामिंग की दिशा में अपने पहले कदम उठाए हैं। आपने सीखा:

  • नेटवर्क सॉकेट क्या होता है और संचार में इसकी क्या भूमिका है।
  • Python के socket मॉड्यूल के बारे में।
  • एड्रेस फ़ैमिली (AF_INET, AF_INET6) और सॉकेट प्रकारों (SOCK_STREAM TCP के लिए और SOCK_DGRAM UDP के लिए) के बीच अंतर।
  • बुनियादी API कॉल: बनाने के लिए socket(), सर्वर के लिए bind() और listen(), तथा क्लाइंट के लिए connect()।
  • accept() आने वाले कनेक्शनों को कैसे संभालता है और sendall()/recv() कैसे काम करते हैं।

अब हम पूर्ण TCP क्लाइंट-सर्वर एप्लिकेशन बनाने के बारे में और गहराई से जानेंगे!

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

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

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

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

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

क्या “Socket API का परिचय” पाठ निःशुल्क है?

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

“Socket API का परिचय” में मैं क्या सीखूँगा?

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

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

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

“Socket API का परिचय” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

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