IPMsg飞鸽传书--文件传输解析

本文介绍了IPMsg(飞鸽传书)的文件传输机制,包括如何利用线程维护文件传输链表,处理文件和文件夹的传输,以及接收端如何通过链表逐次接收文件。难点在于文件夹的递归传输,通过发送特定信息包实现。同时提到了Linux相关知识,如内核I2C、socket问题和线程保护。
摘要由CSDN通过智能技术生成
    这里继续讨论IPMSG飞鸽传书,前几天,详细的了解了IPMSG飞鸽传书的网络协议,详细分析并且实现了IPMSG飞鸽传书的消息传递过程,这里就IPMSG飞鸽传书中的文件和文件夹的传输做详细的说明。    
    在IPMSG 飞鸽传书中,如果要进行文件或者文件夹的传输,首先需要做的就是消息的应答,通过UDP发送文件传输报文,另外的IPMSG飞鸽传书客户端收到报文后,使用TCP协议发送应答报文,这样就开始进行文件的传输了。
   这里开启两个线程,线程1负责文件的传送,线程2负责文件的接受,下边做一一说明。
   首先,我们知道,可以发送多个文件,这些文件需要建立链表保存信息。

typedef struct file_info
{
    struct file_info *next; //双向链表
    struct file_info *forward;
    char *file;  //文件名
    int type;  //文件类型:文件或者文件夹
    int size;  //文件大小
    struct sockaddr_in addr;  //目标网络信息
} FILE_INFO;

文件传送链表由专门的线程维护,这样,线程1就可以专心进行处理文件传输队列就可以了,线程1始终查询这个链表,如果表头为NULL,就说明没有要传输的文件,表头非空,就开始发送报文,获得正确的应答后,就可以开始文件的传输了,文件传输结束,将相应的链表节点删除。这里借鉴了很多程序中使用非常广泛的“

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值