1、是不是因为socket的创建(socket(***)函数)很花时间,因此才有了连接池的必要?
2、一个socket句柄(sokcet(***)函数的返回值)在连接某个ip并且传输完毕之后,是否可以再拿来connect另外一个ip?这两个过程是否能够调用closesocket?

解决方案 »

  1.   

    1、连接词可以理解为一个缓存,也可以相当于日常的”容器“的作用。当你要重复进行连接操作,每次使用每次创建,这样很耗资源,效率低,这样你可以创建一个连接词,存放多个连接操作,每当连接的时候去连接词里面调用即可    2.你第一个创建socket后然后closesocket后第二次肯定不能用了已经释放资源了。
      

  2.   

    1.频繁的创建销毁Socket肯定是要消耗开销的,一个服务器,经常要接受到连接请求和断开连接,就可以创建一个连接池,最简单的就是创建一个全局Socket数组,服务器运行期间,一旦产生,不再销毁。可以提高一些性能。
    2.一个Socket,连接了一个ip之后,只要不销毁,还可以连接其他ip。这期间不能调用CloseSocket
      

  3.   

    1.连接池 比如预先建立个100连接.不做任何事.当需要时,直接从池里取出一个连接.给你用.用完后.你不要closesocket.而是交还给连接池. 这样优点是避免了频繁创建销毁socket.以及connect. 而不是内存碎片.2.我没那样干过.
      

  4.   

    套接字是内核资源,在内核态下创建;
    连接池把创建好的套接字放在池中,每次需要accept()的时候就从池里分配一个给它
    这样就避免了频繁的内核态和用户态的切换,而这个切换消耗很大
    用完的套接字可以在内存池用相应的标记进行表示,不能closesocket(),否则系统会自动销毁该对象