加了些观察代码:
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秒
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秒
“增加包的大小”:可以,但即便调整到2000也只是增到15k/s,这还是差很远。
长度:4087478
时间:297.64秒
read time: 0.27秒
send time:297.37秒
你是不是用的是同步方式打开file,
发送时的速度还要跟对方接受程序的响应速度有关。
你改成异步方式打开,再发送看看。