【发布时间】:2019-12-10 01:38:19
【问题描述】:
我正在尝试在我的程序中处理多个客户端请求,所以我可以从我的代码中在哪里设置多线程代码。
根据我在下面发布的代码,如何初始化线程。
class A(object):
result = []
def __init__(self):
config = configparser.ConfigParser()l
config.read(r'setup.ini')
config.sections()
f = config['NETWORK']
self.port = int(f['PORT']) # port
self.host = str(f['HOST']) # host
self.buff_size = int(f['BUFF_SIZE'])
self.client_string = ''
self.s = socket.socket()
def listenn(self):
self.s.bind(('localhost', self.port))
print("\nlistening...")
self.s.listen(5)
def handle_request(self):
conn, address = self.s.accept()
print("\n======after accepting request=====\n")
conn.send(b'connected\n', self.buff_size)
print(f"got connection from{address}")
self.client_string = conn.recv(self.buff_size)
class B(A):
super().__init__()
main():
a= A()
a.listenn()
a.handle_request()
b=B()
.
.
它应该处理多个请求并执行创建的第一个请求的功能,并且服务器应该是活动的。
from socket import *
from threading import Thread
clients = []
def clientHandler(c, addr):
global clients
print(addr, "is Connected")
try:
while True:
data = c.recv(1024)
if not data:
break
for client in clients:
if addr != client:
c.sendto(data, client)
except:
print("Error. Data not sent to all clients.")
HOST = '' #localhost
PORT = 8000
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(5)
print("Server is running on "+ str(PORT))
#Thread(target=clientHandler).start()
#Thread(target=clientHandler).start()
#Thread(target=clientHandler).start()
trds = []
for i in range(5):
c, addr = s.accept()
clients.append(addr)
t = Thread(target=clientHandler, args = (c, addr))
trds.append(t)
t.start()
for t in trds:
t.join()
s.close()
我想用下面的代码添加它。
【问题讨论】:
-
那么你遇到了什么问题?
-
我需要使用 threadin/ 处理请求
-
你的代码有什么问题?你有什么错误
标签: python python-3.x sockets python-multithreading