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

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

Python में मूल TCP क्लाइंट और सर्वर अनुप्रयोग बनाकर विश्वसनीय, कनेक्शन-उन्मुख संचार लागू करें।

पाठ 2, कुल 4 में से11 चरण

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

TCP सॉकेट: पहले कनेक्शन

Python के साथ नेटवर्क एप्लिकेशन बनाना सीखने में आपका स्वागत है! यह पाठ TCP (ट्रांसमिशन कंट्रोल प्रोटोकॉल) सॉकेट पर केंद्रित है, जो विश्वसनीय इंटरनेट संचार की आधारशिला हैं।

UDP के विपरीत, TCP एक कनेक्शन-आधारित प्रोटोकॉल है। इसका अर्थ है कि डेटा भेजे जाने से पहले दो एप्लिकेशन के बीच एक सीधा और स्थिर लिंक स्थापित किया जाता है।

TCP विश्वसनीय क्यों है

TCP यह सुनिश्चित करता है कि आपका डेटा सही क्रम में और सही तरीके से पहुँचे। यह इन चीज़ों को संभालता है:

  • गारंटीकृत डिलीवरी: डेटा खो जाने पर उसके खंड दोबारा भेजे जाते हैं।
  • क्रमबद्ध डेटा: डेटा उसी क्रम में पहुँचता है जिसमें भेजा गया था।
  • त्रुटि जाँच: डेटा की अखंडता सत्यापित की जाती है।
  • प्रवाह नियंत्रण: यह तेज़ प्रेषक को धीमे प्राप्तकर्ता पर अत्यधिक डेटा भेजने से रोकता है।

इसी कारण TCP वेब ब्राउज़िंग, ईमेल और फ़ाइल स्थानांतरण के लिए आदर्श है।

TCP सर्वर: सुनने वाला

TCP सर्वर की भूमिका क्लाइंट से आने वाले कनेक्शनों के लिए सुनना है। सर्वर की सामान्य कार्यप्रणाली इस प्रकार है:

  1. एक सॉकेट बनाएँ।
  2. सॉकेट को IP पते और पोर्ट से बाइंड करें।
  3. क्लाइंट कनेक्शनों के लिए सुनें।
  4. आने वाला कनेक्शन स्वीकार करें।
  5. संचार करें (डेटा भेजें/प्राप्त करें)।
  6. सॉकेट बंद करें।

Python TCP सॉकेट बनाना

Python में हम अंतर्निहित socket मॉड्यूल का उपयोग करते हैं। TCP सॉकेट बनाने के लिए हम IPv4 एड्रेसिंग हेतु socket.AF_INET और TCP हेतु socket.SOCK_STREAM निर्दिष्ट करते हैं।

इस बुनियादी उदाहरण को चलाकर देखें:

import socket

def main():
    # Create a TCP/IP socket
    # AF_INET for IPv4, SOCK_STREAM for TCP
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print("TCP socket created successfully!")
    tcp_socket.close()
    print("Socket closed.")

if __name__ == "__main__":
    main()

सर्वर: पते और पोर्ट से बाइंड करना

सॉकेट बनाने के बाद, सर्वर को उसे एक विशिष्ट IP पते और पोर्ट संख्या से bind करना होता है। इससे ऑपरेटिंग सिस्टम को पता चलता है कि सर्वर कनेक्शनों के लिए कहाँ सुनेगा।

.bind((HOST, PORT)) सॉकेट को उस पते से जोड़ता है। .listen(backlog) उसे कनेक्शन स्वीकार करने के लिए तैयार करता है, जहाँ backlog कतार में रखे जा सकने वाले कनेक्शनों की अधिकतम संख्या है।

import socket

def main():
    HOST = '127.0.0.1'  # Localhost
    PORT = 65432        # Port to listen on (non-privileged)

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        server_socket.bind((HOST, PORT))
        server_socket.listen(1) # Allow 1 pending connection
        print(f"Server listening on {HOST}:{PORT}")
    except Exception as e:
        print(f"Error binding or listening: {e}")
    finally:
        server_socket.close()
        print("Server socket closed.")

if __name__ == "__main__":
    main()

सर्वर: क्लाइंट को स्वीकार करना

.accept() विधि सर्वर के लिए अत्यंत महत्वपूर्ण है। यह तब तक प्रोग्राम के निष्पादन को रोकती है जब तक कोई क्लाइंट जुड़ने का प्रयास न करे। कनेक्शन बनने पर यह दो मान लौटाती है:

  • उस विशिष्ट क्लाइंट के साथ संचार करने के लिए एक नया सॉकेट ऑब्जेक्ट (conn)।
  • क्लाइंट का पता (addr), जो (host, port) टपल होता है।
import socket

def main():
    HOST = '127.0.0.1'
    PORT = 65432

    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((HOST, PORT))
    server_socket.listen(1)
    print(f"Server waiting for connection on {HOST}:{PORT}...")

    # This will block until a client connects
    conn, addr = server_socket.accept()
    with conn: # Use 'with' for auto-closing the client socket
        print(f"Connected by client from {addr}")
        # In a real app, send/recv would happen here
        conn.sendall(b"Hello from server!") # Send some bytes
        print("Sent greeting to client.")
    server_socket.close()
    print("Server socket closed.")

if __name__ == "__main__":
    main()

TCP क्लाइंट: कनेक्शन शुरू करना

TCP क्लाइंट की भूमिका सर्वर से कनेक्शन शुरू करना है। इसकी सामान्य कार्यप्रणाली इस प्रकार है:

  1. एक सॉकेट बनाएँ।
  2. सर्वर के IP पते और पोर्ट से जुड़ें।
  3. संचार करें (डेटा भेजें/प्राप्त करें)।
  4. सॉकेट बंद करें।

क्लाइंट: सर्वर से जुड़ना

क्लाइंट सर्वर से कनेक्शन स्थापित करने के लिए .connect((HOST, PORT)) विधि का उपयोग करता है। सफल होने पर एक आभासी सर्किट बनाया जाता है। यदि सर्वर सुन नहीं रहा है, तो आपको ConnectionRefusedError मिलेगा।

इसे चलाएँ। यदि कोई सर्वर नहीं चल रहा होगा, तो यह एक त्रुटि दिखाएगा:

import socket

def main():
    HOST = '127.0.0.1'  # Server's IP address
    PORT = 65432        # Server's port

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        print(f"Attempting to connect to server at {HOST}:{PORT}...")
        client_socket.connect((HOST, PORT))
        print("Successfully connected to the server!")
    except ConnectionRefusedError:
        print("Connection refused. Is the server running?")
    except Exception as e:
        print(f"Client connection error: {e}")
    finally:
        client_socket.close()
        print("Client socket closed.")

if __name__ == "__main__":
    main()

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

कनेक्शन स्थापित हो जाने के बाद, क्लाइंट और सर्वर दोनों डेटा भेज और प्राप्त कर सकते हैं। याद रखें कि नेटवर्क डेटा बाइट्स के रूप में भेजा जाता है, इसलिए भेजने से पहले स्ट्रिंग को अक्सर .encode() करना पड़ता है और प्राप्त बाइट्स को वापस स्ट्रिंग में बदलने के लिए .decode() करना पड़ता है।

  • .sendall(data): पूरा डेटा विश्वसनीय रूप से भेजता है।
  • .recv(buffer_size): अधिकतम buffer_size बाइट्स प्राप्त करता है।
import socket

def main():
    HOST = '127.0.0.1'
    PORT = 65432

    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    try:
        client_socket.connect((HOST, PORT))
        message = "Hello from the client!"
        client_socket.sendall(message.encode('utf-8'))
        print(f"Client sent: '{message}'")

        data = client_socket.recv(1024) # Receive up to 1024 bytes
        if data:
            print(f"Client received: '{data.decode('utf-8')}'")
        else:
            print("Client received no data (server might have closed).")
    except ConnectionRefusedError:
        print("Connection refused. Please run the server example first!")
    except Exception as e:
        print(f"Client communication error: {e}")
    finally:
        client_socket.close()
        print("Client socket closed.")

if __name__ == "__main__":
    main()

TCP संचार प्रवाह

Python के किसी सामान्य TCP सर्वर द्वारा कनेक्शन स्थापित करने और किसी इको क्लाइंट द्वारा संचार करने के चरणों पर विचार कीजिए।

पुनरावलोकन: TCP क्लाइंट-सर्वर सॉकेट

बहुत अच्छा! आपने Python में TCP क्लाइंट-सर्वर संचार की मूल बातें सीख ली हैं:

  • TCP विश्वसनीय, कनेक्शन-आधारित संचार उपलब्ध कराता है।
  • सर्वर किसी पते से bind होते हैं, कनेक्शनों के लिए listen करते हैं और क्लाइंट को accept करते हैं।
  • क्लाइंट सर्वर के पते से connect करते हैं।
  • दोनों डेटा भेजने के लिए .sendall() और प्राप्त करने के लिए .recv() का उपयोग करते हैं; डेटा बाइट्स के रूप में होता है।

मज़बूत नेटवर्क एप्लिकेशन बनाने के लिए ये अवधारणाएँ अत्यंत महत्वपूर्ण हैं!

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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