Я пытаюсь выяснить проблему многопоточности, когда два клиента работают вечно и одновременно отправляют запросы на сервер, а сервер постоянно выводит сообщение.
Я посмотрел на многопоточность, когда узналкак один клиент / сервер может отражаться вечно.
Когда я добавил второго клиента, он получил бы последний вывод первого клиента.Затем второй клиент будет неоднократно повторять эхо с сервером, в то время как первый клиент никогда не получает сообщение, замораживая его.
Я застрял на этом в течение нескольких дней, поэтому помощь будет хорошей.
В любом случае,это код, который я использовал для проверки:
ClientA.py
import socket
import time
host = '127.0.0.1'
port = 2004
BUFFER_SIZE = 2000
tcpClientA = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpClientA.connect((host, port))
while True:
data = 'this is client A'
tcpClientA.send(data)
data2 = tcpClientA.recv(BUFFER_SIZE)
print " Client A received data:", data2
Clientb.py совпадает с клиентом A,но с ab
Server.py
import socket
import time
import thread
from threading import Thread
from SocketServer import ThreadingMixIn
BUFFER_SIZE = 1024
TCP_IP = '127.0.0.1'
TCP_PORT = 2004
tcpServer = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpServer.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
threads = []
def client(ip,port):
while True:
data = conn.recv(2048)
conn.send(data)
conn.close()
print "Server waiting"
tcpServer.bind((TCP_IP, TCP_PORT))
tcpServer.listen(4)
while True:
conn,addr=tcpServer.accept()
thread.start_new_thread(client,(conn,addr))
tcpServer.close()