本帖最后由 oyljerry 于 2013-01-20 17:40:54 编辑

解决方案 »

  1.   

    问题三:if((SOCKET_ERROR==sendSockets[idx-1].Send(&data,count))) 错误!应改为:
    Send( &data, count * sizeof(double) )  //第二个参数为发送字节数。fread这个函数返回的是个数,而不是字节数。
      

  2.   

    问题二:如果想提高发送效率,应该组成大包再发送。第一步:
    BYTE* pBuf = new BYTE [ 5 * 1024 * 1024 ];  //开辟个足够大的内存。如:5MB。第二步:
    把流中的数据一次性拷贝到这块内存中。并得到实际占用的内存大小nRealSize。
    这里nRealSize单位为字节。第三步:
    Send( pBuf, nRealSize );
      

  3.   

    将要发送的数据比如几千个点一起打包,然后用zlib压缩库压缩后发送。
    还要讲negle特性禁用掉。
      

  4.   

    你要速率快,有要实时,其实你可以弄个折中方案。
    因为tcp会把你的小包组成大包发送的。所以一次尽量多发送点。
      

  5.   

    除了楼上提到了这些方法外,Win API 中有一个直接发送文件的函数,可以减少内核切换。
      

  6.   

    哪个函数是传文件函数?传送大文件行吗,比如1G、2G、3G