Hướng dẫn này hướng dẫn bạn cách làm việc với lập trình socket mô tả sự đồng thuận giữa Mô hình Máy khách-Máy chủ với sự trợ giúp của Đa luồng trong Python
Bước đầu tiên của chúng tôi được gọi bằng cách tạo Máy chủ đa luồng bằng Python, nó làm gì?
Tạo một máy chủ đa luồng trong Python
Bước đầu tiên bắt đầu bằng việc tạo tập lệnh máy chủ, đây là phần thiết yếu nhất
Tại sao?
Vì vậy, để tạo giao tiếp, hãy nhập thư viện ổ cắm để tạo kết nối bằng cách sử dụng đa luồng. Bạn thậm chí có thể xem qua thư viện luồng Python
import socket import os from _thread import *Hãy nhảy vào ứng dụng của chúng tôi và dám tạo kết nối ổ cắm với sự trợ giúp của phương pháp ServerSideSocket = socket.socket() host = '127.0.0.1' port = 2004 ThreadCount = 00. Tài liệu tham khảo được lấy từ thư viện ổ cắm python. PORT và HOST được xác định để thiết lập giao tiếp với khách hàng
ServerSideSocket = socket.socket() host = '127.0.0.1' port = 2004 ThreadCount = 0Trong bước này, chúng tôi kết nối HOST và PORT với máy chủ socket; . Nó ném thông báo lỗi
try: ServerSideSocket.bind((host, port)) except socket.error as e: print(str(e)) print('Socket is listening..') ServerSideSocket.listen(5)Kết nối nhiều khách hàng trong Python
Chúng tôi sẽ giữ nguyên khái niệm cốt lõi;
Đến bây giờ, chúng tôi đã tạo ra một phương pháp giúp chúng tôi hiểu việc xử lý các yêu cầu của khách hàng cụ thể
Chúng ta phải tạo một hàm hoàn toàn mới và đặt tên là ServerSideSocket = socket.socket() host = '127.0.0.1' port = 2004 ThreadCount = 01;
Trong hàm multi_threaded_client, phương thức ServerSideSocket = socket.socket() host = '127.0.0.1' port = 2004 ThreadCount = 02 lấy dữ liệu từ mỗi máy khách một cách riêng biệt và trả về phản hồi của máy chủ cho một máy khách cụ thể
def multi_threaded_client(connection): connection.send(str.encode('Server is working:')) while True: data = connection.recv(2048) response = 'Server message: ' + data.decode('utf-8') if not data: break connection.sendall(str.encode(response)) connection.close()Chấp nhận kết nối ổ cắm máy khách trong Python
Máy chủ phải chạy liên tục, ít khi kết nối máy chủ của chúng tôi có thể bị xuống cấp do một số lỗi ẩn
Để làm cho kết nối máy chủ chạy liên tục, chúng tôi sẽ nhờ sự trợ giúp của vòng lặp while
Kết nối ổ cắm máy chủ được kết hợp với phương thức chấp nhận và kết hợp quy trình liên tục trong một lần
Nó diễn giải quy trình và trả về thông tin của các máy khách được kết nối, chẳng hạn như số luồng và địa chỉ được cung cấp cho nó
Như bạn có thể thấy, hàm start_new_thread đang xử lý kết nối;
while True: Client, address = ServerSideSocket.accept() print('Connected to: ' + address[0] + ':' + str(address[1])) start_new_thread(multi_threaded_client, (Client, )) ThreadCount += 1 print('Thread Number: ' + str(ThreadCount)) ServerSideSocket.close()Ví dụ về máy chủ ổ cắm Python Nhiều kết nối
Đây là mã cuối cùng để xử lý kết nối của nhiều máy khách với lập trình phía máy chủ
________số 8_______Lập trình socket với đa luồng
Trong bước này, chúng tôi sẽ tạo một cơ chế trong đó nhiều máy khách có thể kết nối với máy chủ và mỗi máy khách được cấp một chuỗi liên kết để quản lý các yêu cầu của máy khách riêng lẻ
Chúng ta hãy bắt đầu xem xét một số mệnh lệnh mà chúng ta đã xử lý trước đó để tạo kết nối phía máy chủ
import socket ClientMultiSocket = socket.socket() host = '127.0.0.1' port = 2004Phương thức kết nối truy cập lấy thông số máy chủ, cổng và tạo kết nối với máy chủ
print('Waiting for connection response') try: ClientMultiSocket.connect((host, port)) except socket.error as e: print(str(e))Ngoài ra, chúng tôi phải giữ cho máy chủ của khách hàng chạy mà không bị thông dịch. Phương pháp ServerSideSocket = socket.socket() host = '127.0.0.1' port = 2004 ThreadCount = 03 được định nghĩa ở đây để lấy dữ liệu từ máy chủ
res = ClientMultiSocket.recv(1024) while True: Input = input('Hey there: ') ClientMultiSocket.send(str.encode(Input)) res = ClientMultiSocket.recv(1024) print(res.decode('utf-8'))Ví dụ mã đầy đủ đa luồng phía máy khách
Vì vậy, đây là ví dụ Đa luồng phía máy khách trong Python
Luồng là một thần dược cuối cùng để làm cho chương trình chạy nhanh. Tuy nhiên, nó cũng làm cho mã khó tổ chức. Tuy nhiên, bạn có thể xác định nhiều nhật ký hơn;
import socket ClientMultiSocket = socket.socket() host = '127.0.0.1' port = 2004 print('Waiting for connection response') try: ClientMultiSocket.connect((host, port)) except socket.error as e: print(str(e)) res = ClientMultiSocket.recv(1024) while True: Input = input('Hey there: ') ClientMultiSocket.send(str.encode(Input)) res = ClientMultiSocket.recv(1024) print(res.decode('utf-8')) ClientMultiSocket.close()máy đào
Tôi là Digamber, một nhà phát triển full-stack và là người đam mê thể dục. Tôi đã tạo trang web này để truyền kinh nghiệm mã hóa của mình cho các lập trình viên mới. Tôi thích viết trên JavaScript, ECMAScript, React, Angular, Vue, Laravel
Twitter GitHubBài viết đề xuất
Ví dụ sắp xếp lựa chọn Python. Sắp xếp một danh sách trong PythonCách đếm số lượng tệp và thư mục trong PythonCách sử dụng Pop() trong Python để xóa các mục trong danh sáchHàm Python max() được giải thích bằng các ví dụLàm thế nào để tìm căn bậc hai trong Python?Hiểu Python Null và Không có từ khóaPython tích hợp . Hướng dẫn số nguyên thành chuỗi Toán tử nhận dạng Python. Nếu không. không ở. không phải. Là. Hướng dẫnNhận độ dài của danh sách bằng hàm Python len()