当前,我的代码仅允许有限数量的套接字连接。这由变量No_Of_Connections确定。
我的问题是:如何使它不是有限的?这意味着我不必对连接数进行硬编码。当客户端关闭连接时,我还需要能够终止或加入线程。
非常感谢您的帮助。谢谢!
def Main():
HOST = '192.168.2.9'
PORT = 65533
No_Of_Connections = 10
trds = []
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen(No_Of_Connections)
print("Server is running on port: " + str(PORT))
try:
for i in range(No_Of_Connections):
c, addr = s.accept()
clients.append(c)
t = Thread(target=clientHandler, args=(s, c, addr))
trds.append(t)
t.start()
for t in trds:
t.join()
except KeyboardInterrupt:
print("caught keyboard interrupt in main, exiting")
s.close()
except Exception as e:
print('Socket Server error: ' + str(e))
感谢您的回复!
ps.s。我仍然不知道如何在连接关闭后优雅地杀死线程。 (这是另一个帖子的问题)
def fnCleanExit(s, trds):
s.close()
for t in trds:
print('Thread terminated... ')
t.join()
def Main():
HOST = '192.168.1.9'
PORT = 65533
trds = []
s = socket(AF_INET, SOCK_STREAM)
s.bind((HOST, PORT))
s.listen()
print("Server is running on port: " + str(PORT))
try:
while True:
c, addr = s.accept()
clients.append(c)
t = Thread(target=clientHandler, args=(s, c, addr))
trds.append(t)
t.start()
except (KeyboardInterrupt, SystemExit):
print("caught keyboard interrupt in main, exiting")
fnCleanExit(s, trds)
except Exception as e:
print('Socket Server error: ' + str(e))
fnCleanExit(s, trds)