码迷,mamicode.com
首页 > 编程语言 > 详细

Socket局域网多线程传输文件的方法

时间:2014-11-19 12:39:32      阅读:225      评论:0      收藏:0      [点我收藏+]

标签: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局域网多线程传输文件的方法

标签:socket传文件   文件循环传输   局域网传文件   socket编程   

原文地址:http://blog.csdn.net/songzige/article/details/41279061

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!