ServerSocket非阻塞编程客户端超过20个后经常掉线?

咖啡色的浪漫 2007-07-23 11:32:47
自己做了一个程序,服务器端同时连接多个客户端并进行相应处理,但现在客户端如果小于20个整个系统可以正常运行,如果超过20个,客户端就很容易掉线,而且是随机掉线,请高手分析一下,谢谢!!!
...全文
217 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
brightyang 2007-07-23
  • 打赏
  • 举报
回复
客户端不用改~
只要修改服务器端的处理线程就行了

在网上找一下吧,
代码太多,贴不下
gzmhero 2007-07-23
  • 打赏
  • 举报
回复
一定是你的代码有问题,我用ServerSocket连接上百个客户端也不会随便掉线.
咖啡色的浪漫 2007-07-23
  • 打赏
  • 举报
回复
brightyang(其实我是一个程序员) : 你好!如果服务器端采用线程方式的话,客户端的连接处理机制是否不需要修改就可以使用了,可否给个参考例子,谢谢!!!
brightyang 2007-07-23
  • 打赏
  • 举报
回复
SERVERSOCKET所用的非阻塞方式是基于WINDOWS消息的IO模式,
尽管在连接客户端数量上没什么阻制,但因为是基于WINDOWS消息,且是在主线程处理,
同时能够处理的事件是非常有限的.
连接上几十个连接要是仅连接着,不做什么事情还好,稍有事件(数据收发,连接,断开)发生,
就负担很重了.


所以最好采用线程处理方式~~~
gzmhero 2007-07-23
  • 打赏
  • 举报
回复
肯定是其他方面的问题,TServerSocket最多可以连接将近2000个左右的客户端,如果你的通讯量不是很大,20个客户端绝对不会这样的,如果服务端能响应,cpu使用不是很高,那么掉线肯定是你的通讯代码有问题.
咖啡色的浪漫 2007-07-23
  • 打赏
  • 举报
回复
客户端是Gprs客户端,是否是其他方面的问题?
僵哥 2007-07-23
  • 打赏
  • 举报
回复
不至于吧...这20个客户的服务内容有多少?就算是单线程select,那在500至1000客户的情况下也还是可以承受的。
Bear_hx 2007-07-23
  • 打赏
  • 举报
回复
而且客服端可以直接用TClientSocket
Bear_hx 2007-07-23
  • 打赏
  • 举报
回复
服务器端最好是用完成端口,可以支持很多客服端的

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧