Máy khách websocket Python đa luồng

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 = 0
0. 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 = 0

Trong 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 = 0
1;

Trong hàm multi_threaded_client, phương thức

ServerSideSocket = socket.socket()
host = '127.0.0.1'
port = 2004
ThreadCount = 0
2 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 = 2004

Phươ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 = 0
3 đượ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 khách websocket Python đa luồng

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 GitHub

Bà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()

WebSockets có đa luồng không?

Giao tiếp máy khách/máy chủ được thực hiện bằng web socket. Hiện tại, đây là một ứng dụng đơn luồng . Rõ ràng, thiết kế này không mở rộng quy mô vì tải trên máy chủ quá cao và phản hồi lại máy khách mất quá nhiều thời gian.

Máy khách có thể có nhiều kết nối WebSocket không?

Tại Stream, bất cứ khi nào bạn kết nối người dùng với kênh, bạn sẽ tạo kết nối WebSocket. Điều đó có nghĩa là đối với mọi người dùng được kết nối, sẽ có ít nhất một kết nối được mở. Tuy nhiên, bạn có biết một người dùng có thể kết nối nhiều lần không? .

WebSocket không chặn?

Thư viện ứng dụng khách WebSocket có thể được sử dụng để tạo ứng dụng khách WebSocket đồng bộ (chặn) hoặc ứng dụng khách không đồng bộ (không chặn, hướng sự kiện) .

Làm cách nào để tạo kết nối WebSocket trong Python?

Ứng dụng khách WebSocket với Python . py” và nhập các gói như chúng ta đã làm trong mã máy chủ Create a new File “client.py” and import the packages as we did in our server code . Bây giờ, hãy tạo một hàm không đồng bộ Python (còn gọi là coroutine). kiểm tra xác định không đồng bộ (). Chúng tôi sẽ sử dụng chức năng kết nối từ mô-đun WebSockets để xây dựng kết nối máy khách WebSocket.