如题!我目前的程序希望尽可能把缓冲区设大,最大可以设成多大呢?和内存大小有关系吗?

解决方案 »

  1.   

    记得有一个宏叫 msgmax吧,这个在winsock2.h中有定义。
      

  2.   


    msdn没写这个能设置多大,但一般不要设置超过64k吧,因为这个设置是每个socket为基础的,而且占用的是系统缓冲区的东西.
      

  3.   

    这估计跟协议栈的实现有关,协议栈完全可以把缓冲区实现成向操作系统申请的内存,在windows下可以设置成很大的,自己试试吧
      

  4.   


    有问题
    除非是服务器SOCKET,否则,
    这个SOCKET上的操作不会影响到其他或者后续接收的SOCKET的,只对当前SOCKET起作用一般文件传输设置的合理值是 32KB-128KB,它用的是系统不可分片缓冲,作为客户端的话,你即使设置512KB问题也不大,服务器端不可以这么搞,否则很快就无法分配新SOCKET了