本帖最后由 oyljerry 于 2012-11-30 21:57:16 编辑

解决方案 »

  1.   

    是投递到你开辟的内存 和 套接字上啊
    没消耗应该不会的,是不是使用的socket池子和重用机制了
      

  2.   

    设想的是不重用,消耗了就再造一批,重用弄不好会有问题,而且操作复杂,不一定比新造强多少!!!!!B、ACCEPTEX是如何被消耗的,ACCEPT在投递之后被保存在哪了?他是如何被取出使用的?(没找到解释)
    C、采用何种方法能得到现在可用的ACCEPT的数量?因为网上公认的做法是:建立一个线程,检查ACCEPTEX的数量,当数量低于xx时,要批量制造,问题是,如何得到当前ACCEPTEX数量? 
      

  3.   

    A 可以你那么理解,ACCEPTEX 意义在于能预先分配一定数量的SOCKET 来等待海量连接。
    B 应该可以理解成通知底层我手动创建的这一堆SOCKET都是用来接受连接的,不再需要去创建SOKCET了。当有连接请求后会消耗掉之前预先分配的某个SOCKET,守住GetQueuedCompletionStatus的返回值LPOVERLAPPED,就能知道是谁被消耗掉了。当然你在AcceptEx的时候就把SOKET与LPOVERLAPPED关联起来,对号入场,到时候对号出场,这个关联方法网上有很多。
    C 你在投AcceptEx的时候,记录下来投了多少个。每连接成功一个就将数量减1,当小于一定数量,你通知你那线程再投放一定量的AcceptEx 同时更新你记录的数量