F
fatalexception
Unregistered / Unconfirmed
GUEST, unregistred user!
架构:TSocketConnection -> scktsrvr.exe -> RemoteDataModule 现状:大量客户端(如200个)同时发起连接请求,中间层或scktsrvr明明无法处理这么多的连接,却又不推辞,最终导致客户端、中间层和scktsrvr都死掉。 期望:让scktsrvr限制Socket的数量,超过限度(如20个)之后的客户端可以向scktsrvr发出连接请求,但scktsrvr不分配给Socket,拒绝连接;客户端超时之后,弹出对话框提示用户。 条件:1、在客户端,必须由应用程序自己来捕获“无法连接”这个错误,不能让操作系统擅自弹出对话框;2、在客户端,必须由应用程序自己指定尝试连接的超时时间,不能无限地等下去。3、在服务器端,scktsrvr拒绝“超限客户端”的连接请求之后,仍然正常监听;当现有客户端释放连接,导致连接总数低于限制值时,scktsrvr又可继续接纳客户端的连接请求。4、在服务器端,scktsrvr拒绝一个“超限客户端”的连接请求时,必须干净地关闭或拒绝创建Socket,干净地结束或拒绝创建Thread,不能在内存里积攒越来越多的“死Socket”“死Thread”。5、可少量改写scktsrvr,但不能大量改写或全部重写,不能换架构,不能用第三方构件。 因为以前开的帖子都没有满足题意的答案,导致分数浪费,本帖先开50分。有满足题意的答案后另奉500分,绝不食言。