加了些观察代码:
         clock_t start1;
double time_read,time_send ;
time_send = time_read =0 ;
clock_t start = clock() ;
while(sent<length)
{
start1 = clock() ;
pa.len = file.Read(pa.body.data,MAX_DATA_LEN) ;
time_read += (double)(clock()-start1)/CLOCKS_PER_SEC ; sent += pa.len ; start1 = clock() ;
// ms.SendPacket(pa) ;
send(s_data,(char*)&pa,sizeof(pa),0) ;
time_send += (double)(clock()-start1)/CLOCKS_PER_SEC ;
} double time = (double)(clock()-start)/CLOCKS_PER_SEC ;
str.Format("长度:%d,\r\n 时间:%7.2f秒\r\n read time:%7.2f秒\r\n send time:%7.2f秒\r\n ",
       length,time,time_read,time_send) ;
AfxMessageBox(str,MB_OK) ;
file.Close() ;我以前做过类似的程序,但那个程序发送速度比这个快很多,以前是在主线程发的,包大小为1000,而现在这个是在辅助线程发的,包大小为800。也试过去掉延迟算法,但还是不行。其中一次messagebox显示为: 
长度:4087478
时间:297.64秒
read time: 0.27秒
send time:297.37秒

解决方案 »

  1.   

    谢谢楼上兄台,你说的做法我之前也试过,但还是不行。“调高线程优先级”: 这样不行,就算是设到HIGHEST还是12k/s。
    “增加包的大小”:可以,但即便调整到2000也只是增到15k/s,这还是差很远。
      

  2.   

    是不是用file.Read()读文件就是慢,用filemapping应该可以快一些
      

  3.   

    不是啊,worldcup()你恐怕没留意到有数据的:其中一次messagebox显示为: 
    长度:4087478
    时间:297.64秒
    read time: 0.27秒
    send time:297.37秒
      

  4.   

    接收是很快的,
    你是不是用的是同步方式打开file,
    发送时的速度还要跟对方接受程序的响应速度有关。
    你改成异步方式打开,再发送看看。
      

  5.   

    请问sjjf(水晶剑锋)文件如何用同步或异步打开。flinming(flinming):我就是用循环来发送的,上面的代码上可以看得出,数据包增大的确能加快速度,但效果不明显,我在回应 ymbymb(毛病大哥)时已说了。
      

  6.   

    应该没问题的,我试过了。在RECEIVE端我处理数据包的代码屏蔽掉都是一样的。
      

  7.   

    但有时却达到2.7m/s没多少秒就传送了100多M的数据。真的费解。
      

  8.   

    itmaster(爱生活,爱拉登):数据均能正常收发,只是速度太慢了。
      

  9.   

    用的什么协议啊!TCP就是慢啊!!用UDP就好多了,不过正确性不保证!!呵呵
      

  10.   

    loseme915(郁闷):TCP慢是相对UDP来说的,但也不会慢到只有12K/S的速度呀。jzyhummel(篱影):如果只是在两机间传送数据才出现这种情况的话,就很可能是网络存在在问题,但在127.0.0.1也是有同样的问题,并且我的网络在用其他软件时还未见有过任何的异常。
      

  11.   

    我是设计成一个数据端和一个命令端,一个客户用一个线程来专门接收它的数据,接收时数据端和命令端是以SELECT超时进行两个端口间接收切换的。