এই প্রবন্ধে আমরা দেখব কিভাবে পাইথনের সাথে সকেট প্রোগ্রামিং ব্যবহার করে সার্ভার এবং ক্লায়েন্ট চ্যাট রুম সিস্টেম তৈরি করা যায়।
সকেটগুলি যে কোনও যোগাযোগ চ্যানেলের শেষ পয়েন্ট। এগুলো সার্ভার এবং ক্লায়েন্ট সংযোগ করতে ব্যবহৃত হয়। সকেট দ্বি-দিকনির্দেশক। এই এলাকায়, আমরা প্রতিটি প্রান্তের জন্য সকেট সেটআপ করব এবং সার্ভারের মাধ্যমে বিভিন্ন ক্লায়েন্টদের মধ্যে চ্যাটরুম সিস্টেম সেটআপ করব। সার্ভার সাইডে ক্লায়েন্ট সকেটের সাথে সংযোগ করার জন্য কিছু পোর্ট রয়েছে। যখন একজন ক্লায়েন্ট একই পোর্টের সাথে সংযোগ করার চেষ্টা করে, তখন সংযোগটি চ্যাট রুমের জন্য প্রতিষ্ঠিত হবে।
মূলত দুটি অংশ আছে। সার্ভার সাইড এবং ক্লায়েন্ট সাইড। যখন সার্ভার সাইড স্ক্রিপ্ট চলছে, এটি কোনো সক্রিয় সংযোগ অনুরোধের জন্য অপেক্ষা করে। যখন একটি সংযোগ স্থাপন করা হয়, তখন এটি তার সাথে যোগাযোগ করতে পারে।
এক্ষেত্রে আমরা লোকালহোস্ট ব্যবহার করছি। যদি মেশিনগুলি LAN এর মাধ্যমে সংযুক্ত থাকে, তাহলে আমরা যোগাযোগের জন্য IP ঠিকানা ব্যবহার করতে পারি। সার্ভারটি তার আইপি প্রদর্শন করবে এবং সার্ভারের জন্য একটি নাম জিজ্ঞাসা করবে। ক্লায়েন্টের দিক থেকে, আমাদের একটি নাম উল্লেখ করতে হবে এবং সংযোগ করার জন্য সার্ভারের আইপি ঠিকানাও উল্লেখ করতে হবে।
সার্ভার সাইড কোড
import time, socket, sys print('Setup Server...') time.sleep(1) #Get the hostname, IP Address from socket and set Port 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) #Try to locate using socket 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])) #get a connection from client side 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()) whileTrue: 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) #Get the hostname, IP Address from socket and set Port soc = socket.socket() shost = socket.gethostname() ip = socket.gethostbyname(shost) #get information to connect with the server 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.') whileTrue: 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())