最大连接数1000个左右的客户端,TCP服务的设计,不知道怎么做了! 1、最大1000个左右的同时在线客户端2、TCP连接这样的服务器应该怎么设计,请给点思路或者参考Demo,谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 闭着眼睛也知道,下面会有一帮人在让你去用完成端口。(哪怕你是一个套接字的udp) 1000个连接. 你要考虑下客户收发数据频率流量. 然后平均下.计算出服务器需要能够吞吐的io. 并设计之.小数据的话,select就ok. 可以用用我资源里的轻量级styleman_network 网络引擎.. WSASynSelect模式. 同意楼上,如果数据量不是很大,select + 线程池应该就可以满足了。 回楼上: 1、每帧的通讯流量一般大概在200个左右,极限在500个BYTE以内, 2、正常通信的频率,每个客户端最极限平了在5秒左右,一般为20~60秒主要是本人没有做过TCP的服务器!在一次感谢!! 上网下载最简单的服务器和客户端的demo, 那个服务器是单纯listen, accept, recv, 处理, send 然后close 的一个最简单的过程. 利用这个最简单的过程, 把客户的业务处理都写上. 然后采用多进程的模式实现并发. 这样自己写就是最简单的了, 不需要用什么非阻塞等等之类的麻烦, 就简单开个线程这样运行这些处理就是了.然后弄一个登录器一样的东东, 主要是用于均衡负载用的, 随机给申请处理的客户端返回一个进程的IP和PORT让客户端再连接过去做具体的业务操作. 这种简单的模式, 你的数据量也较小, 400人并发应该不会成问题的 还是用IOCP吧http://www.vckbase.com/document/viewdoc/?id=1732http://www.vckbase.com/document/viewdoc/?id=1866 今天有空,刚才就顺便测试了下我styleman_network 网络引擎的性能.结果如下.机器配置 intel e7300cpu , 2g内存 本机运行server/client.----------------------------------------------------server WSASynSelect 1500个客户连接client 纯发Sleep(100);发1包(1KB)总cpu20%1有[1500]个客户连接 发包[1500/s] 收包[1500/s]----------------------------------------------------server eSELECT_THREADPOOL 貌似线程池只支持500个.client 纯发Sleep(10);发1包(1KB)总cpu20%以内. 还是多线程能发挥高效的io1有[500]个客户连接 发包[4850/s] 收包[4850/s]1有[500]个客户连接 发包[4800/s] 收包[4800/s]1有[500]个客户连接 发包[4702/s] 收包[4702/s]1有[500]个客户连接 发包[4928/s] 收包[4928/s]1有[500]个客户连接 发包[4890/s] 收包[4891/s]1有[500]个客户连接 发包[4899/s] 收包[4898/s]1有[500]个客户连接 发包[4827/s] 收包[4827/s]1有[500]个客户连接 发包[4921/s] 收包[4921/s] 当然.外网收发速度比不了本机或内网的传输速度.. 很多物理因素.昨晚又把最新版的测试了下. 还是iocp最高.1000连接1秒收发1KB. cpu10%左右.WSASynSelect由于窗体thread只有一个.所以工作起来有极限.single select也是.threadpool select扩展性好.cpu也15%左右. select 模型,完全可以满足啊 select 模型+多线程,运行效果还是可以的啊 用IOCP或者完成例程都可以。详见http://www.88dev.com/forum-viewthread-tid-52-fromuid-40.html 应征小版主,散分。。。 VC里对于分割后的窗体,怎样锁定某一个分割栏不被拖动? 求两条线段焦点的问题 哪位有操作ADO操作数据库的编程实例吗 请大家看看我的代码错在哪里,怎么改才可以,在线! 如何利用winpcap得到本机的ip地址列表? 如何修改EXE文件中的内容? 文件映射问题 请教:用CPropertySheet、CPropertyPage做向导的时候,如何在某个属性页中中止整个向导?立即揭帖,谢谢! to Alwin_Lee(): 急!哪位高手可以帮忙写个MFC程序的查找函数? Textout根据窗口大小自动换行,滚动问题!
(哪怕你是一个套接字的udp)
1、每帧的通讯流量一般大概在200个左右,极限在500个BYTE以内,
2、正常通信的频率,每个客户端最极限平了在5秒左右,一般为20~60秒主要是本人没有做过TCP的服务器!在一次感谢!!
利用这个最简单的过程, 把客户的业务处理都写上. 然后采用多进程的模式实现并发.
这样自己写就是最简单的了, 不需要用什么非阻塞等等之类的麻烦, 就简单开个线程这样运行这些处理就是了.然后弄一个登录器一样的东东, 主要是用于均衡负载用的, 随机给申请处理的客户端返回一个进程的IP和PORT让客户端再连接过去做具体的业务操作.
这种简单的模式, 你的数据量也较小, 400人并发应该不会成问题的
http://www.vckbase.com/document/viewdoc/?id=1866
机器配置 intel e7300cpu , 2g内存
本机运行server/client.
----------------------------------------------------
server WSASynSelect 1500个客户连接
client 纯发Sleep(100);发1包(1KB)
总cpu20%1有[1500]个客户连接 发包[1500/s] 收包[1500/s]----------------------------------------------------server eSELECT_THREADPOOL 貌似线程池只支持500个.
client 纯发Sleep(10);发1包(1KB)
总cpu20%以内. 还是多线程能发挥高效的io1有[500]个客户连接 发包[4850/s] 收包[4850/s]
1有[500]个客户连接 发包[4800/s] 收包[4800/s]
1有[500]个客户连接 发包[4702/s] 收包[4702/s]
1有[500]个客户连接 发包[4928/s] 收包[4928/s]
1有[500]个客户连接 发包[4890/s] 收包[4891/s]
1有[500]个客户连接 发包[4899/s] 收包[4898/s]
1有[500]个客户连接 发包[4827/s] 收包[4827/s]
1有[500]个客户连接 发包[4921/s] 收包[4921/s]
WSASynSelect由于窗体thread只有一个.所以工作起来有极限.
single select也是.
threadpool select扩展性好.cpu也15%左右.
详见
http://www.88dev.com/forum-viewthread-tid-52-fromuid-40.html