সকেট কী?
সকেট হলো বাই-ডিরেকশনাল কমিউনিকেশন চ্যানেলের এন্ডপয়েন্ট। নেটওয়ার্কে দুটি প্রসেস (ক্লায়েন্ট-সার্ভার) যোগাযোগের মাধ্যম। TCP (নির্ভরযোগ্য) এবং UDP (দ্রুত, কানেকশনলেস) প্রোটোকল সাপোর্ট করে।
সার্ভার সাইড (TCP)
import socket
def start_server(host='localhost', port=12345):
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server_socket.bind((host, port))
server_socket.listen(5)
print(f"Server listening on {host}:{port}")
while True:
client_socket, addr = server_socket.accept()
print(f"Connection from {addr}")
data = client_socket.recv(1024).decode('utf-8')
print(f"Received: {data}")
response = f"Server received: {data}"
client_socket.send(response.encode('utf-8'))
client_socket.close()
if __name__ == "__main__":
start_server()
ক্লায়েন্ট সাইড (TCP)
import socket
def start_client(host='localhost', port=12345):
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_socket.connect((host, port))
message = "Hello from client!"
client_socket.send(message.encode('utf-8'))
response = client_socket.recv(1024).decode('utf-8')
print(f"Server response: {response}")
client_socket.close()
if __name__ == "__main__":
start_client()
UDP সার্ভার/ক্লায়েন্ট
# UDP Server
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind(('localhost', 12345))
while True:
data, addr = sock.recvfrom(1024)
print(f"From {addr}: {data.decode()}")
sock.sendto(b"ACK", addr)
# UDP Client
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.sendto(b"Hello UDP", ('localhost', 12345))
data, _ = sock.recvfrom(1024)
print(data.decode())
প্রধান সকেট মেথডস
| মেথড | বিবরণ |
|---|---|
socket() | সকেট অবজেক্ট তৈরি |
bind((host, port)) | অ্যাড্রেস বাঁধা (সার্ভার) |
listen(backlog) | লিসেনিং শুরু (সার্ভার) |
accept() | কানেকশন অ্যাকসেপ্ট (সার্ভার) |
connect((host, port)) | সার্ভারের সাথে কানেক্ট (ক্লায়েন্ট) |
send(data) | ডেটা পাঠানো (TCP) |
recv(bufsize) | ডেটা গ্রহণ (TCP) |
sendto(data, addr) | ডেটা পাঠানো (UDP) |
recvfrom(bufsize) | ডেটা গ্রহণ (UDP) |
close() | সকেট বন্ধ |
gethostname() | হোস্টনেম পাওয়া |