Многопоточный сервер сокетов в Python

Поток представляет собой последовательность таких инструкций в рамках программы , которая может быть выполнена независимо от другого кода. Многопоточная программа содержит две или более части , которые могут работать одновременно. Каждая часть такой программы называется потоком, и каждый поток определяет отдельный путь выполнения. Многопоточное программирование сокетов описывает, что многопоточный сервер Socket может одновременно взаимодействовать с несколькими клиентами в одной и той же сети.

В предыдущем уроке Python Socket Programming описывает программу Socket Socket, которая может обмениваться данными только с одним клиентом одновременно. Это означает, что программа Socket Socket Python не принимает более одного клиентского соединения . Из следующего раздела вы можете понять, как на многопоточном сервере Python M можно одновременно общаться с несколькими Клиентами. Вы можете увидеть основы программирования Socket в предыдущем уроке, прежде чем вы начнете этот раздел взглянуть на Python Socket Programming

Программирование многопоточного сокета Python имеет два раздела:

  1. Программа Pilton Multi Threaded Server Socket (Server.py)
  2. Программа Python Client Socket (client.py)

Пример использования многопоточного сервера (Server.py)

import socket, threading
class ClientThread(threading.Thread):
def __init__(self,clientAddress,clientsocket):
threading.Thread.__init__(self)
self.csocket = clientsocket
print ("New connection added: ", clientAddress)
def run(self):
print ("Connection from : ", clientAddress)
#self.csocket.send(bytes("Hi, This is from Server..",'utf-8'))
msg = ''
while True:
data = self.csocket.recv(2048)
msg = data.decode()
if msg=='bye':
break
print ("from client", msg)
self.csocket.send(bytes(msg,'UTF-8'))
print ("Client at ", clientAddress , " disconnected...")
LOCALHOST = "127.0.0.1"
PORT = 8080
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind((LOCALHOST, PORT))
print("Server started")
print("Waiting for client request..")
while True:
server.listen(1)
clientsock, clientAddress = server.accept()
newthread = ClientThread(clientAddress, clientsock)
newthread.start()

Пример клиента Socket Python (client.py)

import socket
SERVER = "127.0.0.1"
PORT = 8080
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((SERVER, PORT))
client.sendall(bytes("This is from Client",'UTF-8'))
while True:
in_data = client.recv(1024)
print("From Server :" ,in_data.decode())
out_data = input()
client.sendall(bytes(out_data,'UTF-8'))
if out_data=='bye':
break
client.close()

Как запустить эту программу?

Создайте Python Multi Threaded Server Socket Program (Server.py) и Python Client Socket Program (client.py) в двух отдельных файлах. Откройте приглашение DOS (консоль) и сначала запустите серверную программу. Затем вы получите сообщение «Сервер запущен» на стороне сервера. Затем вы запускаете клиентскую программу в другом приглашении (консоли) DOS, после чего вы можете увидеть сообщение с сервера. Таким образом, вы можете одновременно запускать несколько клиентов из разных приглашений Dos и общаться с программой Server. Сервер принимает ваше сообщение и отвечает на одно и то же сообщение одному клиенту. Вы можете открыть много клиентской программы и протестировать ответ сервера каждому клиенту.

 

 

Источник: net-informations.com

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 3,33 из 5)
Adblock
detector