当前位置:白小姐输尽光全年资料大全 > 取子夹名称 >

linux下socket如何传输一个目录以及目录下的子文件子

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  代码是设想,未经测试。实现起来有困难可以再追问追问不懂tar 也不懂popen...设想用递归。可是太麻烦了。追答对,就是因为太麻烦了所以才让你用tar的。

  popen简单说就是把一个程序的输出当作文件来读,比如ls可以列出一个文件夹下的所有文件,

  以后,从fp里面读取数据,就和读取一般文件一样,能读到一个文件夹下的所有文件的列表(字符串格式)

  关于tar的使用,很容易,你可以上网搜一下,然后自己尝试一下 tar -cf 和 tar -xf 这样的,然后再尝试一下 tar -c 和 tar -x 配合输入输出重定向(就是 和 符号),这两个学起来……应该一个半天内可以搞定?

  popen和tar弄会以后,就可以直接用popen从tar的输出读数据,然后用同样的方法还原数据。

  tar其实就是这么一个工具,相当于你用的那些什么压缩软件,可以把一堆文件打包成一个文件的,只是它只管打包解包不管压缩解压。我的想法就是tar打包以后发过去,对方收到后用tar解包。只是省去了中间存文件的步骤

  方法是,在指定端口建立侦听,比如8888,使用的协议可以是tcp/ip或者udp/ip

  其实文件传输本质就是数据传输,我们在服务器端只需要使用opendir函数“打开”文件夹

  再使用readdir函数遍历文件夹即可,将所有读到的文件名进行判断,比如判断该文件是否为文件夹,或者是否会特殊文件,比如软链接,socket文件,管道文件等等,如果是文件夹则进行该文件夹进行递归(即进入该文件夹后施行前面相同的方法,以此类推下去,直到读取完所有的文件夹),并将该文件夹名称发送给客户端,客户端接收到该文件夹名称后使用mkdir函数创建一个文件夹,如果为一般文件将该文件名和所在目录发送到客户端,客户端创建该文件(如果是多级文件夹则客户端则进入文件夹)读取该文件(fopen或者open),可以一边读取文件内容一边将读取的内容发送给客户端,客户端则将接收到的内容写入到文件即可

  这里需要注意的就是服务器端与客户端需要规划好一定的规则,也就是需要建立一个简单的服务器与客户端通信的协议

  服务器端在检查文件夹内的文件时通过不同的文件类型来制定不同的标签,客户端通过检测这些标签来确定下一步的操作

  客户端在接收到该数据后进行解析,解析到冒号前的文件类型为文件夹则创建一个冒号后的文件夹名称(这里文件夹名称包括多级目录,我们也可以设置的更完善点,比如 文件类型:文件夹:文件夹:文件夹,最后一个文件夹名称则为客户端需要创建的文件夹,前面的则是该文件夹所在的绝对路径)

http://lumkeslaw.com/quzijiamingchen/189.html
点击次数:??更新时间2019-06-07??【打印此页】??【关闭
  • Copyright © 2002-2017 DEDECMS. 织梦科技 版权所有  
  • 点击这里给我发消息
在线交流 
客服咨询
【我们的专业】
【效果的保证】
【百度百科】
【因为有我】
【所以精彩】