还是这个啊,我觉得自己写一个read和write的循环,自己设定缓冲区的大小,就可以不用管它98还是2000了

解决方案 »

  1.   

    Socket SDK中, NFS的最大传输长度为8192, 如果大于这个数, 如8193, 那么recv就要接收两次, 第一次8192, 第二次1, 我以前做过的就是这样的, 在这里验证一下说法`~~呵呵`~~
      

  2.   

    to zx_sanjin:
    谢谢你的关注,不过你说的情况我是知道的,UDP每个包其实是1.4K左右进行拆分发送的,但我的问题是如何能为每个SOCKET开大于64K的系统缓冲(在2000下不存在此问题)
      

  3.   

    那只好自己开了。
    可以自己写一个buf类来管理。
      

  4.   

    我以前写过一个,最大开过1024*64*500 BYTE
    不过不是很通用。hehe
      

  5.   

    在tcp/ip协议中有个MTU(最大传输单位),这个值不同的系统而不同,一般很小。而且在实际的网络环境中即使编程时传送一块连续的buf,但是也会随网络实际状况而被分片发送。64k在内存中是一个临界值(这是由计算机历史内存原因促成的),因此在一般的编程中网络buffer最大为64k,而且实际一般用8k已经足够(8192字节),这是我的经验。如果你一定要送400k而方便,你可以自己做个函数再把网络buf封装即可。