看到一本资料上说,Windows Sockets应用程序可以使用的套接字最大数目是由常量FD_SETSIZE决定的,其默认值是64.那岂不是说,一个程序最多就只能创建64个套接字,可我的一个程序最多可能要创建128个套接字,那该怎么办?

解决方案 »

  1.   

    只有select方式限制为64,听说即使用了select,也有突破限制的办法有其它方式没有连接数限制,当然也不是说无穷大^&^
      

  2.   

    你的理解是错误的,这至少限制了select函数一次能处理的socket的个数,这河能open多少个socket没有什么关系。多于64个socket,你只要分在两个线程分别select就没有关系
      

  3.   

    如果那本书说这不是select的限制而是socket的限制,那么它是胡扯
      

  4.   

    fd_set空间可以自己分配,且fd_set.count可以自己指定,所以说select也可以突破64个socket句柄限制。
      

  5.   

    我也在关心连接数目的问题http://topic.csdn.net/u/20090621/07/7c820085-865c-4f78-966f-ce8de0783316.html
    帮你顶一下,关注……
      

  6.   

    迅雷,BT。。 上千个socket都正常。
      

  7.   

    只能说,select模型的连接数受限于FD_SETSIZE,而且这个宏可以#undef/#define 的大些。
    对于其他IO模型,比如完成端口,可以说没有连接数限制。