1、最大1000个左右的同时在线客户端
2、TCP连接
这样的服务器应该怎么设计,请给点思路或者参考Demo,谢谢!

解决方案 »

  1.   

    闭着眼睛也知道,下面会有一帮人在让你去用完成端口。
    (哪怕你是一个套接字的udp)
      

  2.   

    1000个连接. 你要考虑下客户收发数据频率流量. 然后平均下.计算出服务器需要能够吞吐的io. 并设计之.小数据的话,select就ok. 
      

  3.   

    可以用用我资源里的轻量级styleman_network 网络引擎.. WSASynSelect模式.  
      

  4.   

    同意楼上,如果数据量不是很大,select + 线程池应该就可以满足了。
      

  5.   

    回楼上:
       1、每帧的通讯流量一般大概在200个左右,极限在500个BYTE以内,
       2、正常通信的频率,每个客户端最极限平了在5秒左右,一般为20~60秒主要是本人没有做过TCP的服务器!在一次感谢!!
      

  6.   

    上网下载最简单的服务器和客户端的demo, 那个服务器是单纯listen, accept, recv, 处理, send 然后close 的一个最简单的过程. 
    利用这个最简单的过程, 把客户的业务处理都写上. 然后采用多进程的模式实现并发. 
    这样自己写就是最简单的了, 不需要用什么非阻塞等等之类的麻烦, 就简单开个线程这样运行这些处理就是了.然后弄一个登录器一样的东东, 主要是用于均衡负载用的, 随机给申请处理的客户端返回一个进程的IP和PORT让客户端再连接过去做具体的业务操作. 
    这种简单的模式, 你的数据量也较小, 400人并发应该不会成问题的
      

  7.   

    还是用IOCP吧http://www.vckbase.com/document/viewdoc/?id=1732
    http://www.vckbase.com/document/viewdoc/?id=1866
      

  8.   

    今天有空,刚才就顺便测试了下我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]
      

  9.   

    当然.外网收发速度比不了本机或内网的传输速度.. 很多物理因素.昨晚又把最新版的测试了下. 还是iocp最高.1000连接1秒收发1KB. cpu10%左右.
    WSASynSelect由于窗体thread只有一个.所以工作起来有极限.
    single select也是.
    threadpool select扩展性好.cpu也15%左右.
      

  10.   

    select 模型,完全可以满足啊
      

  11.   

    select 模型+多线程,运行效果还是可以的啊
      

  12.   

    用IOCP或者完成例程都可以。
    详见
    http://www.88dev.com/forum-viewthread-tid-52-fromuid-40.html