首页 > 代码库 > Socket局域网多线程传输文件的方法
Socket局域网多线程传输文件的方法
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;//客户端发送连接已经关闭,发送完毕
file.Write(buffer,finish);
step+=finish;//写文件的位置
}
注意:合理设置缓冲区大小,此方法效率较低,是不是多开线程能加快速度?
Socket局域网多线程传输文件的方法
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。