F
fatalexception
Unregistered / Unconfirmed
GUEST, unregistred user!
系统结构: TClientDataSet -> TSocketServer -> scktsrvr.exe -> RemoteDataModule -> ADO 要求:允许500-1000个客户端同时“请求”连接,服务器和客户端均不能死掉。 注意:不需要这些用户同时“成功建立”连接、“保持”连接,更不需要同时操作数据。 现状:在现有的程序中,只要同时“请求”连接的客户端达到一个较大的数量,例如80或100,应用服务器就停止响应了。客户端尝试连接时,不但无法建立连接,甚至都无法获得一个“返回错误”,而是跟着一起停止响应。 期望:能够允许500-1000个客户端同时发出连接请求、尝试连接。当然,可以限制并发工作数,哪怕限制到很小的数量;但是,超出这个数量的客户端在执行TSocketConnection.Open时,必须能立刻收到一个“连接数已满,拒绝连接”的返回信息;或者进入一个等待队列,重试指定次数或者重试指定时间;或者,哪怕仅仅抛出个异常。但不允许停止响应,不允许无声无息地死掉。 通俗地讲,我不要求你SocketServer多么神通广大、接纳几百几千用户同时保持连接、操作数据。你可以只有很小的负载能力,哪怕只能同时容纳20个客户端保持连接、操作数据。但是,当第21个客户端试图连接时,你必须立刻告诉客户端“满了,不再提供连接了”,以便客户端另做安排,比如等几秒后重试,或者让用户自己决定是否重试。你不能自己大包大揽,不管来多少连接请求都通吃,但又无法连接成功或者无法完成数据请求,最后把自己搞死,把应用服务器搞死,让我的客户端傻等着。 请问,可否实现?如何实现?可少量改写scktsrvr.exe,但不能另写socket程序或对scktsrvr.exe进行大篇幅的重写。