تو قسمت اول با مفاهیم پایه سوکت آشنا شدیم
تو این قسمت میخوایم یه سرور سوکت ایجاد کنیم
1 2 3 4 5 6 7 8 9 10 11 12 |
import socket from socket import AF_INET,SOCK_STREAM, SOCK_DGRAM s = socket.socket(AF_INET, SOCK_STREAM) s.bind(('127.0.0.1',4000)) s.listen(1) conn, address = s.accept() chunk = conn.recv(4096) if chunk: print(chunk) conn.sendall(b'your data recieved') |
اینجا ما یه سوکت سرور روی پروتکل TCP و پورت 4000 راه اندازی کردیم
ورودی تابع listen مشخص میکنه چند تا درخواست تو نوبت بمونن وقتی سرور در حال سرویس دهی به یک درخواست هست
همونطور که مشخص هست این سوکت سرور همزمان میتونه تنها به یک درخواست پاسخ بده برای اینکه بشه چند تا درخواست رو همزمان پردازش کنه میتونیم از ترد استفاده کنیم
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import socket from socket import AF_INET,SOCK_STREAM, SOCK_DGRAM import threading s = socket.socket(AF_INET, SOCK_STREAM) s.bind(('127.0.0.1',4000)) s.listen(1) def handle(conn, address): global s conn.sendall(b'hello from server') while True: chunk = conn.recv(4096) if chunk: print(chunk) conn.sendall(b'your data recieved') clients = [] while True: conn, address = s.accept() client = threading.Thread(target=handle, args=(conn, address,)) client.start() clients.append(client) clients.join() |
نمونه کد ارسال درخواست به سرور
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import socket import time from socket import AF_INET, SOCK_STREAM, SOCK_DGRAM s = socket.socket(AF_INET, SOCK_STREAM) s.connect(('127.0.0.1', 4000)) s.send(b'hello from client') while True: chunk = s.recv(4096) if chunk: print(chunk) time.sleep(1) |