文件遍历,socket传输解决方案
发布时间:2011-06-23 14:21:31 文章来源:www.iduyao.cn 采编人员:星星草
文件遍历,socket传输
在一文件夹:photo下,存放着按照年月日排序的日期文件 并且数据量很大
如:D:\photo\111\2009_11_17\12\10001.jpg
想要遍历photo目录下,使用FindFirstFile
while (FindNextFile(hFind, &wfd));
进行遍历各个文件夹的文件
如何有效在遍历文件后与socket传输相结合 ???
1、得到一个文件后就立即传输吗?(传输速度若受到影响的话)
2、将得到的文件遍历结果保存下来吗?
3、将路径分解为目录,之后针对各个路径进行文件的传输,之后删除空目录
恳请得到大家的见解
------解决方案--------------------
1、得到一个文件后就立即传输吗?(传输速度若受到影响的话)
最好不要,你需要开多少个线程来传输呢,发送的会挂掉,接受的也会挂掉,网络也会堵塞
把扫描的文件路径存放起来,开5(自己可以定义)线程,每个线程从存放的地方去取然后传输
2、将得到的文件遍历结果保存下来吗?
肯定,传送失败还可以标记,然后重传
3、将路径分解为目录,之后针对各个路径进行文件的传输,之后删除空目录
不必要,我们只要绝对路径即可,跟文件夹无关(除非你有特殊要求必须A文件夹传输完毕,才能传输B文件夹的)
------解决方案--------------------
你可以单独开一个线程用于socket传输,在该线程中多开几个缓冲内存块,比如每个内存块为1M,这样利用遍历得到的文件就可以拷贝给发送线程的缓冲内存块,当满1M就发送,否则等待。
至于文件的编程利用递归方法,网上很多这样的程序的:)
------解决方案--------------------
同意楼上,你定义一个类似于 struct { string path;//保存遍历得到的文件路径
BOOL sended;//记录是否发送
}
的结构保存你的遍历结果,然后单独开一个线程从结构体中查找没有发送的文件用socket传输,
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
关于visual studio 2005的工程文件*.vcproj的问题
请问:Visual Studio 2005 新建一个工程之后,会自动生产一个*.vcproj的一个文件,这...
-
用MFC画图的问题
我现在要用随机数产生300个固定的点保存在数组中,并在ondraw里画出这300个点,而且通过定时器使这300个点做运动。...
-
VS2010中的C++怎么连接数据库?
之前一直用VC++6.0的、现在想学学用最新的VS、但是感觉连接数据库和之前不一样了、具体应该怎么弄...
-
CLI编程 高手帮忙
我现在用C++/CLI 混编,
我有一个方法, 是调用一个C 的类库 得到一个 char * 的值
现在我...
-
新手求教::VC.NET2003里面的"添加变量"菜单变灰了,怎么弄?
最近学着用.net写程序,以前用的是6.0,不知道为什么我设计的EDIT Con...
-
刚学习vc.net 请教一个String做参数的问题,请高手指教一下
下面的代码为什么不能编译呢,出现这个错误呢
.\clr.cpp(12) : error C3...
-
VS2003中通过ADO取SQL2003中bigint 负值变正值的问题,求助!
在SQL2003中 数据库中假设 一个bigint类型的数据位-1234这样的值,通过如...
-
新手学习VC用那个版本的编译器好!
新手学习VC用那个版本的编译器好!?
------解决方案--------------------
VC++6.0
------解决...
-
正则表达式
有这样的字符串
"1,',2"",3"
希望将单个的"替换成单引号,将连续两个的""替换成一个双引号。
正则表达式该如何写。
...
-
为什么<<精通MFC>>附带的源程序不能编译成功
vc2010编译后有两个错误提示,分别如下,
错误一:
1>c:\program files\microsoft vi...