我有一台服务器,它会为每个安全连接的客户端创建一个新线程。如果我使用线程池,这意味着我将同时拥有有限数量的客户端。然而,这意味着我不能监听所有客户端的端口。
我的想法是让客户端发送一个 UDP 数据包,其中包含一些链接到那里的连接的 ID,这样他们就可以重新建立连接,而不是将线程锁定 10-60 秒(服务器会将 SSLsockets 保存在内存中) . 这是解决问题的好方法吗? - 我没有看到任何安全漏洞。
服务器是 java,客户端是 C++,这不会影响问题。
最佳答案
你的问题没有意义。如果客户端想要重新连接,它应该只打开一个新套接字。您至少设置了一个额外的线程来监听 UDP 端口,然后……什么?它仍然必须使用线程池来处理该客户端,如果这是您自己施加的约束,或者启动一个新线程,在这种情况下,您可能一开始就没有线程池约束。
However this means I cannot be listening on ports for all clients.
不,它没有。这只是意味着在线程池已满时,部分客户端会延迟服务,而在积压队列已满时,极少数客户端会连接失败。它根本不会削弱您倾听客户的能力。
关于ssl - 服务器设计: Send UDP packet for SSLTCP wakeup?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14330494/