如何构建SOCKET池呢? SOCKET本身是系统资源,如果频繁地调用Socket/closesocket创建和释放对服务端的性能有一定的影响,如何实现SOCKET池呢?也就是Socket在Socket(),bind(),recv/send后可以重用的,并且可以重新bind到另一个端口?

解决方案 »

  1.   

    2个队列。一个是正在使用的socekt, 一个是空闲的socket。正在使用的socket如果使用完就close,丢到空闲的。有新的连接的时候,先从空闲队列取,没有的话再socket一个
      

  2.   

    striking(硬撑者)  说的和楼主想要的不一样,楼主希望的是不用close就可重新bind已经在使用中的socket,想要节省一点系统资源.
      

  3.   

    socket如果使用完就close,丢到空闲的?
    如果调用closesocket()会将减少SOCKET资源的引用计数,导致系统直接释放SOCKET资源,
    那么按照“ striking(硬撑者)  ”所说得到的不是SOCKET池,而是SOCKET句柄池了。
      

  4.   

    不能么? 我想将SOCKET资源用完后回退到Socket/WSASocket创建时的状态,Socket创建时
    需要指定SOcket类型等信息,bind操作难道是单向的么?
      

  5.   

    如果要提高多socket的程序效率,在完成端口和重叠io上花力气吧重叠io 是把建立socket的io操作流水线化 可以提高在io上表现
    完成端口的概念类似楼主的说法,搜索一下资料吧
      

  6.   

    完成端口只是一个处理机罢了。。还得在socket上完成具体操作
      

  7.   

    不close就重新绑定,要出错的。