- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于labview的局域网TCP传输文件夹问题的解决
用labview来做局域网的文件传输已经很久了,用tcp顺利解决了大文件的传输,其中包括几个G的文件,然而当你遇到一个文件夹里面包含的很多小文件需要传输时,一个个单独选择文件显得非常麻烦,因此实现文件夹的传输显得十分迫切,而且会使得传输程序更加全面,更加人性化。
二.软件流程图
以前所做的程序能够将一个文件顺利传输到客户端,因此传输文件夹里面的多个文件的基本思路就是让传输单个文件的程序循环多次,也就是在它的外面加一个for循环,循环次数由该文件夹所包含的文件个数决定,但是考虑到也可能传输的仅仅是一个文件,或者文件夹里面没有文件或只有几个空文件夹而已,因此软件的设计显得比想象中复杂了许多,最终的结果也确实如此,下图是软件设计的基本流程,分别为服务器的软件流程框图和客户机的框图。
三.具体程序框图分解
下面对服务器和客户机中对于传输文件夹部分的具体修改做一简单说明。
1.
使用获取扩展文件名函数,如果文件名为空字符串则选择的是文件夹,否则选择的是文件。 [p]
2.
将该文件名发送给客户端并将文件路径给读取文件的函数;
将1给发送的for循环的循环次数,并将它传输给客户端,告诉他只接受一个文件
3.
将该文件夹内所包含的的所有文件夹数组去掉前面的绝对路径部分后转化为电子表格字符串然后与所含的文件个数的数值一起发送给客户端;
将所含的所有文件路径给循环进行索引,对各个文件单独进行读取传输。
下面是客户端的一些修正,在建立tcp连接之后,具体的操作如下面所述:
4.处理接收到的数据:
刚开始接收到的是文件个数的值和所有文件夹的相对路径组成的字符串,将它们通过一个循环和匹配模式函数将它们组成一个数组,其中第零个所有未文件的个数,也就是接收端接受循环的循环次数,剩下的是所有文件夹组成的数组。
5.新建需要的文件夹:
根据所得的数组,将所有包含的文件夹在客户端要保存的位置以相对路径的方式新建。
完了就是由for循环来分别接受各个文件并将它们存放在刚刚新建的对于的文件夹里,文件夹名称与原来服务器的一致。
四.小问题解析
1.导出文件夹内所包含的的所有文件及文件夹用递归文件列表函数;
2.数组需要发送时要转化成字符串,使用数组至电子表格字符串转换函数,而且可以将换行符作为分隔符来分隔不同的文件夹名称,tcp不能直接发送数组;
3.单个文件输入到数组索引时转化为数组即可;
4.接收端用匹配模式函数将字符串转化为文件夹名数组;
5.接收端根据文件夹名称数组来通过循环新建对应的文件夹时要将文件夹名称字符串用删除两端空白函数进行处理,否则最后一个文件夹无法新建,原因偶不晓得,以后再议。