Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

पायथन में लो-लेवल नेटवर्किंग इंटरफ़ेस (socket मॉड्यूल)

पायथन की स्टैंडर्ड लाइब्रेरी में 'socket' मॉड्यूल परिभाषित करता है कि सर्वर और क्लाइंट मशीनें ऑपरेटिंग सिस्टम के ऊपर सॉकेट एंडपॉइंट्स का उपयोग करके कैसे संचार कर सकती हैं। 'socket' API में कनेक्शन-ओरिएंटेड और कनेक्शनलेस दोनों नेटवर्क प्रोटोकॉल के लिए फ़ंक्शन्स होते हैं।

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

सॉकेट ऑब्जेक्ट बनाना

'socket' मॉड्यूल में socket() फ़ंक्शन एक सॉकेट ऑब्जेक्ट सेट करता है:

import socket
obj = socket.socket(family, type, protocol)

'family' तर्क डिफ़ॉल्ट रूप से AF_INET है। अन्य स्वीकार्य मान हैं: AF_INET6, AF_UNIX, AF_CAN या AF_RDS। 'type' तर्क का मान डिफ़ॉल्ट रूप से 'SOCK_STREAM' है जो कनेक्शन-ओरिएंटेड प्रोटोकॉल (TCP) को इंगित करता है। कनेक्शनलेस प्रोटोकॉल (UDP) के लिए इसे 'SOCK_DGRAM' पर सेट करें। 'protocol' तर्क आमतौर पर डिफ़ॉल्ट रूप से 0 पर सेट होता है।

सर्वर और क्लाइंट पर सॉकेट ऑब्जेक्ट्स को क्रमशः सर्वर सॉकेट और क्लाइंट सॉकेट कहा जाता है। सॉकेट ऑब्जेक्ट निम्न मेथड्स को लागू करता है:

bind() यह मेथड सॉकेट को निर्दिष्ट IP एड्रेस और पोर्ट नंबर से बांधता है।
listen() यह मेथड सर्वर शुरू करता है और क्लाइंट से कनेक्शन रिक्वेस्ट की तलाश में एक लिसन लूप में चला जाता है।
accept() जब सर्वर द्वारा कनेक्शन रिक्वेस्ट इंटरसेप्ट की जाती है, तो यह मेथड इसे स्वीकार करता है और क्लाइंट सॉकेट को उसके एड्रेस के साथ पहचानता है।

सामान्य सर्वर-साइड कोड

import socket
ss = socket.socket()
ss.bind(('localhost', 12345))
ss.listen()
client, addr = ss.accept()
print("connection request from: " + str(addr))

यदि स्थानीय मशीन का उपयोग सर्वर के रूप में किया जाता है ताकि उसी मशीन से क्लाइंट के रूप में इनकमिंग मैसेजेस सुने जा सकें, तो इसका IP एड्रेस '127.0.0.1' होता है जिसे लूपबैक एड्रेस भी कहा जाता है। इसकी पहचान 'localhost' होस्टनेम से होती है। सॉकेट को मनमाने खाली पोर्ट नंबर पर सुनने के लिए बनाया जाता है। नेटवर्क में दूरस्थ मशीनों के बीच संचार के लिए वास्तविक IP एड्रेस का उपयोग किया जाना चाहिए।

क्लाइंट कनेक्शन

connect()

obj = socket.socket()
obj.connect((host, port))

एक बार क्लाइंट से कनेक्शन रिक्वेस्ट सर्वर द्वारा स्वीकार कर लेने के बाद, दोनों सॉकेट ऑब्जेक्ट्स अब TCP प्रोटोकॉल का उपयोग करके कनेक्टेड हैं और वे डेटा भेज और/या प्राप्त कर सकते हैं।

send()

सर्वर उस एड्रेस का उपयोग करके क्लाइंट को डेटा भेजता है जिसे उसने इंटरसेप्ट किया है।

client.send(bytes)

क्लाइंट सॉकेट उस सॉकेट को डेटा भेजता है जिससे उसने कनेक्शन स्थापित किया है।

obj.send(bytes)

sendall()

send() के समान। यह मेथड तब तक डेटा भेजना जारी रखता है जब तक सभी डेटा भेज नहीं दिया जाता।

sendto()

यह मेथड केवल UDP प्रोटोकॉल के मामले में उपयोग किया जाता है।

recv()

यह मेथड क्लाइंट को भेजे गए डेटा को पुनर्प्राप्त करने के लिए उपयोग किया जाता है। सर्वर के मामले में, यह उस रिमोट सॉकेट का उपयोग करता है जिसकी रिक्वेस्ट स्वीकार की गई है।

client.recv(bytes)

क्लाइंट के मामले में:

obj.recv(bytes)

recvfrom()

यह मेथड UDP प्रोटोकॉल के मामले में उपयोग किया जाता है।

सर्वर कोड

import socket
host = "127.0.0.1"
port = 12345
ss = socket.socket()
ss.bind((host, port))
ss.listen()
cs, addr = ss.accept()
print("Connection from: " + str(addr))
while True:
    data = cs.recv(1024).decode()
    if not data:
        break
    print("from connected user: " + str(data))
    print("Received from User: " + str(data))
    data = input("type message: ")
    cs.send(data.encode())
cs.close()

क्लाइंट कोड

import socket
host = '127.0.0.1'
port = 12345
obj = socket.socket()
obj.connect((host, port))
message = input("type message: ")
while message != 'q':
    obj.send(message.encode())
    data = obj.recv(1024).decode()
    print('Received from server: ' + data)
    message = input("type message: ")
obj.close()

दो कमांड प्रॉम्प्ट विंडोज़ खोलें। एक में पहले सर्वर कोड चलाएं। फिर दूसरे में क्लाइंट कोड चलाएं।

पायथन में लो-लेवल नेटवर्किंग इंटरफ़ेस (socket मॉड्यूल)

  1. पायथन में SMTP प्रोटोकॉल क्लाइंट (smtplib मॉड्यूल) पायथन में SMTP प्रोटोकॉल क्लाइंट (smtplib मॉड्यूल)

    पायथन की स्टैंडर्ड लाइब्रेरी में smtplib मॉड्यूल एक SMTP क्लाइंट सेशन ऑब्जेक्ट को परिभाषित करता है जिसका उपयोग पायथन प्रोग्राम के माध्यम से मेल भेजने के लिए किया जा सकता है। एक मेल सर्वर एक एप्लिकेशन है जो इंटरनेट पर ई-मेल को हैंडल और डिलीवर करता है। आउटगोइंग मेल सर्वर SMTP (सिंपल मेल ट्रांसफर प्रो

  1. पायथन सॉकेट त्रुटि 48 को ठीक करें पायथन सॉकेट त्रुटि 48 को ठीक करें

    सॉकेट त्रुटि 48 एक पायथन त्रुटि है जो तब ट्रिगर होती है जब प्रक्रिया खुद को एक ऐसे पोर्ट से बांधने का प्रयास करती है जो पहले से ही उपयोग में है। socket.error: [Errno 48] Address already in use त्रुटि का कारण क्या है? संक्षिप्त शोध के बाद, हमने कारणों को पाया: प्रोसेस पोर्ट से बंधा हुआ: जब भी सर्

  1. रूबी नेटवर्क प्रोग्रामिंग में मास्टर करें: सॉकेट्स के साथ कस्टम क्लाइंट्स और सर्वर्स बनाएं रूबी नेटवर्क प्रोग्रामिंग में मास्टर करें: सॉकेट्स के साथ कस्टम क्लाइंट्स और सर्वर्स बनाएं

    क्या आप रूबी में कस्टम नेटवर्क क्लाइंट्स और सर्वर्स बनाना चाहते हैं? या बस यह समझना चाहते हैं कि यह कैसे काम करता है? तब आपको सॉकेट्स से निपटना होगा। मेरे साथ रूबी नेटवर्क प्रोग्रामिंग के इस दौरे में शामिल हों ताकि मूल बातें सीख सकें, और रूबी का उपयोग करके अन्य सर्वरों और क्लाइंट्स से बात करना शुरू