কম্পিউটার টিউটোরিয়াল

পাইথনে সিম্পল চ্যাট রুম (সকেট প্রোগ্রামিং)

এই আর্টিকেলে আমরা দেখব কিভাবে সকেট প্রোগ্রামিং ব্যবহার করে পাইথনে একটি সার্ভার এবং ক্লায়েন্ট চ্যাট রুম সিস্টেম তৈরি করা যায়।

সকেটগুলো যেকোনো কমিউনিকেশন চ্যানেলের এন্ডপয়েন্ট। এগুলো সার্ভার এবং ক্লায়েন্টকে কানেক্ট করতে ব্যবহৃত হয়। সকেটগুলো বাই-ডিরেকশনাল। এই এলিয়াতে, আমরা প্রতিটি এন্ডের জন্য সকেট সেটআপ করব এবং সার্ভারের মাধ্যমে বিভিন্ন ক্লায়েন্টের মাঝে চ্যাটরুম সিস্টেম সেটআপ করব। সার্ভার সাইডে কিছু পোর্ট রয়েছে ক্লায়েন্ট সকেটের সাথে কানেক্ট করার জন্য। যখন একটি ক্লায়েন্ট একই পোর্ট দিয়ে কানেক্ট করার চেষ্টা করে, তখন চ্যাট রুমের জন্য কানেকশন thiết হয়।

মূলত দুটি অংশ রয়েছে। সার্ভার সাইড এবং ক্লায়েন্ট সাইড। সার্ভার সাইড স্ক্রিপ্ট চলাকালীন, এটি যেকোনো এক্টিভ কানেকশন রিকোয়েস্টের জন্য অপেক্ষা করে। যখন একটি কানেকশন thiết হয়, এটি সেটার সাথে কমিউনিকেশন করতে পারে।

এই কেসে আমরা লোকালহোস্ট ব্যবহার করছি। যদি মেশিনগুলো LAN দিয়ে কানেক্টেড থাকে, তবে আমরা IP অ্যাড্রেস ব্যবহার করে কমিউনিকেট করতে পারি। সার্ভার তার IP দেখাবে, এবং সার্ভারের জন্য একটি নাম চাইবে। ক্লায়েন্ট সাইড থেকে, আমাদের একটি নাম দিতে হবে, এবং সার্ভারের IP অ্যাড্রেসও দিতে হবে কানেক্ট করার জন্য।

সার্ভার সাইড কোড

import time, socket, sys
print('Setup Server...')
time.sleep(1)
# socket থেকে hostname, IP Address পেয়ে 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)  # 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]))
# ক্লায়েন্ট সাইড থেকে একটি কানেকশন পান
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)
# socket থেকে hostname, IP Address পেয়ে Port সেট করুন
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())
  1. পাইথনে সিম্পল ইন্টারেস্ট (Simple Interest) ক্যালকুলেটর

  2. পাইথনে WhatsApp অটোমেশন (WhatsApp using Python)

  3. পাইথন Tkinter ব্যবহার করে সিম্পল রেজিস্ট্রেশন ফর্ম

  4. পাইথনে cx_Freeze ব্যবহার করে এক্সিকিউটেবল বানানো