Python 如何在这里添加多线程?
我试图在我的程序中处理多个客户机请求,所以从我的代码中可以在哪里设置多线程代码 根据我在下面发布的代码,如何初始化线程Python 如何在这里添加多线程?,python,python-3.x,sockets,python-multithreading,Python,Python 3.x,Sockets,Python Multithreading,我试图在我的程序中处理多个客户机请求,所以从我的代码中可以在哪里设置多线程代码 根据我在下面发布的代码,如何初始化线程 class A(object): result = [] def __init__(self): config = configparser.ConfigParser()l config.read(r'setup.ini') config.sections() f = config['NETWORK
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()
我想将其与下面的代码一起添加。将下面示例中的线程代码合并到类代码中并不困难-只需将方法
handle\u request()
替换为
def handle_request(self):
while 1:
conn, address = self.s.accept()
print("\n======after accepting request=====\n")
conn.send(b'connected\n', self.buff_size)
print("got connection from%s"%{address})
Thread(target=self.clientHandler, args=(conn, )).start()
def clientHandler(self, conn):
client_string = conn.recv(self.buff_size)
print(client_string) # or do what's supposed to do
conn.close()
这实际上是将
accept()
与clientHandler()
线程的start()
放在一个循环中,而不是在主线程中处理客户机。那么您得到了什么问题?我需要使用threadin处理请求/您的代码有什么问题?你有什么错误