1.思维:为了实现各种文件的大小可以被发送和接收的,它可以被设置为发送和接收缓冲器环。并记录文件的位置读取,假设读入缓冲区的字节的特定数目大于缓冲区的大小较小。然后该文件被发送,退出发送周期,关闭连接。和Csocket它被阻止。收到发送端发送的全部内容,直到发送端连接关闭。接收端退出接收循环。
//循环发送文件
2.主要代码
发送端:
do{
file.Seek(step,CFile::begin);
over=file.Read(buffer,BUFFERSIZE);//文件读入缓冲
err=sockClient.Send(buffer,over);
if( BUFFERSIZE>over )
break; //缓冲区的字节数小于缓冲区,也就是文件小于一个缓冲区,退出
step+=err; //下一次从step開始读文件
}while( true);
sockClient.close();
接收端:
while( true )
{
finish=fileListen.Receive(buffer,BUFFERSIZE);
if(0==finish)
break;//client发送连接已经关闭,发送完成
file.Write(buffer,finish);
step+=finish;//写文件的位置
}
注意:合理设置缓冲区的大小,该方法是低效率,是不是更开放的线程可以增加速度?
版权声明:本文博客原创文章。博客,未经同意,不得转载。
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/4732844.html,如需转载请自行联系原作者