看了VC网络编程。里面介绍到的一些模型
比如select模型 FD_SET 结构最多管理64个socketWSAEventSelect模型中使用的WSAWaitForMultipleEvents句柄数量最大也是64个。
现在假如我的客户端的数量有1000个,那怎么办? 后面介绍的完成端口模型说是可以管理几百甚至上千个,但是假如我做的是一个对战平台,同时在线的有5,6万人,或者是木马有众多的数量,那用的是什么模型呢?

解决方案 »

  1.   

    select模型你可以重新define FD_SIZE 8196
      

  2.   

    在你的程序里重定义宏FD_SETSIZE,记得《WinSock网络编程经络》那本书讲select那章有介绍。
      

  3.   

    可以用多个服务器啊,每个服务器假设服务器1w个client,用服务器集群,10个服务器不就可以同时服务器10w客户,以此类推,中间还需要用到网络均衡配置。
      

  4.   

    一般来说,在达到系统句柄的极限之前,你的业务已经跑不动了,除非你没有业务,只是测试一下能分配多个个句柄。
    所以你不应该担心系统是否能分配出足够的句柄(你这里是套接字),你担心某些api的限制倒是有可能性的,拿select来说,在linux下必须要重新编译内核,在windows下虽然可以重新定义FD_SETSIZE,但在套接字越多的情况下,select的性能越发的差,所以最根本的解决办法还是换模型,比如iocp或者epoll,换了模型,如果还是有限制,则多创建几个模型(selec模型也可以通过这种方式来扩容),假如iocp限制100个套接字的话,你可以创建10个iocp句柄,就达到1000个套接字了。