我如何在python中实现无限数量的套接字连接?

问题描述 投票:0回答:1

当前,我的代码仅允许有限数量的套接字连接。这由变量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))
python sockets serversocket
1个回答
0
投票

感谢您的回复!

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)
© www.soinside.com 2019 - 2024. All rights reserved.