इस लेख में हम देखेंगे कि Python के साथ सॉकेट प्रोग्रामिंग का उपयोग करके सर्वर और क्लाइंट चैट रूम सिस्टम कैसे बनाया जाए।
सॉकेट्स किसी भी कम्युनिकेशन चैनल के एंडपॉइंट्स हैं। इनका उपयोग सर्वर और क्लाइंट को जोड़ने के लिए किया जाता है। सॉकेट्स बाय-डायरेक्शनल हैं। इस क्षेत्र में, हम प्रत्येक एंड के लिए सॉकेट्स सेटअप करेंगे और सर्वर के माध्यम से विभिन्न क्लाइंट्स के बीच चैट रूम सिस्टम सेटअप करेंगे। सर्वर साइड में क्लाइंट सॉकेट्स से जुड़ने के लिए कुछ पोर्ट्स होते हैं। जब कोई क्लाइंट उसी पोर्ट से जुड़ने का प्रयास करता है, तो चैट रूम के लिए कनेक्शन स्थापित हो जाएगा।
मूल रूप से दो भाग हैं। सर्वर साइड और क्लाइंट साइड। जब सर्वर साइड स्क्रिप्ट चल रही होती है, तो यह किसी एक्टिव कनेक्शन रिक्वेस्ट का इंतजार करती है। जब एक कनेक्शन स्थापित हो जाता है, तो यह उससे कम्युनिकेट कर सकता है।
इस मामले में हम लोकलहोस्ट का उपयोग कर रहे हैं। यदि मशीनें LAN के माध्यम से जुड़ी हैं, तो हम कम्युनिकेट करने के लिए IP एड्रेसेस का उपयोग कर सकते हैं। सर्वर अपना IP प्रदर्शित करेगा, और सर्वर के लिए नाम पूछेगा। क्लाइंट साइड से, हमें एक नाम बताना होगा, और सर्वर के IP एड्रेस को भी कनेक्ट करने के लिए बताना होगा।
सर्वर साइड कोड
import time, socket, sys
print('Setup Server...')
time.sleep(1)
# सॉकेट से होस्टनाम, IP एड्रेस प्राप्त करें और पोर्ट सेट करें
soc = socket.socket()
host_name = socket.gethostname()
ip = socket.gethostbyname(host_name)
port = 1234
soc.bind((host_name, port))
print(host_name, '({})'.format(ip))
name = input('Enter name: ')
soc.listen(1)
print('Waiting for incoming connections...')
connection, addr = soc.accept()
print("Received connection from ", addr[0], "(", addr[1], ")\n")
print('Connection Established. Connected From: {}, ({})'.format(addr[0], addr[0]))
# क्लाइंट साइड से कनेक्शन प्राप्त करें
client_name = connection.recv(1024)
client_name = client_name.decode()
print(client_name + ' has connected.')
print('Press [bye] to leave the chat room')
connection.send(name.encode())
while True:
message = input('Me > ')
if message == '[bye]':
message = 'Good Night...'
connection.send(message.encode())
print("\n")
break
connection.send(message.encode())
message = connection.recv(1024)
message = message.decode()
print(client_name, '>', message)
क्लाइंट साइड कोड
import time, socket, sys
print('Client Server...')
time.sleep(1)
# सॉकेट से होस्टनाम, IP एड्रेस प्राप्त करें और पोर्ट सेट करें
soc = socket.socket()
shost = socket.gethostname()
ip = socket.gethostbyname(shost)
# सर्वर से कनेक्ट करने के लिए जानकारी प्राप्त करें
print(shost, '({})'.format(ip))
server_host = input("Enter server's IP address:")
name = input("Enter Client's name: ")
port = 1234
print('Trying to connect to the server: {}, ({})'.format(server_host, port))
time.sleep(1)
soc.connect((server_host, port))
print("Connected...\n")
soc.send(name.encode())
server_name = soc.recv(1024)
server_name = server_name.decode()
print('{} has joined...'.format(server_name))
print('Enter [bye] to exit.')
while True:
message = soc.recv(1024)
message = message.decode()
print(server_name, ">", message)
message = input(str("Me > "))
if message == "[bye]":
message = "Leaving the Chat room"
soc.send(message.encode())
print("\n")
break
soc.send(message.encode())