昨天一个面试题目。
tcp网络开发,服务器端一般的原理是当有一个客户连接上来的时候建立一个线程。
但是当用客户很多的时候,例如10万个同时访问,我的服务器程序应该如何编写。
难道要建立10万个thread??
请求解决方案。

解决方案 »

  1.   

    tcp支持10万用户同时连接吗?SOCKET不是一个到65535的数吗?完成端口能支持到多少?我做了测试,500个客户端线程,每个线程5次连接发消息,服务器4个线程,还可以接受的速度,p3的机器,局域网内部测试线程池更好吗?原理应该是一样的吧select?那样效率应该还不如完成端口的吧
      

  2.   

    感谢楼上各位,
    支不支持在另当别论,IIS那样的Web服务器是如何做的呢?
      

  3.   

    IIS就是线程池来处理的。它处理的事情多着呢, 不只是客户端的连接还有COM ASP script之类的
    事。除了IIS, J2EE我也看过一些吹牛的文章他们也有这方面的问题, 也是采用程序池的方法。
     sssxueren(xueren) 说的也是,完成端口也是为了处理这些问题而产生的。 不过就是把控制权交给了操作系统罗, 相信自己还是相信别人(这不是一般的人哦)?
      

  4.   

    iis这类的线程池的具体操作怎样的呢?通过select来获得输入流数据吗?
      

  5.   

    推荐:“IO完成端口”!!再说了,“IO完成端口”本来就是线程池的一种具体实现方法而已,只不过是由系统进行管理和支配而已。信不信得过,看你自己了。我在单位测试过:
    P2-350,WIN2KServer,128M,连接4000都比较轻松.