ipmsg 文件传输协议
来源:互联网 发布:mac 没用 电池不充电 编辑:程序博客网 时间:2024/06/06 04:04
这里继续讨论IPMSG飞鸽传书,前几天,详细的了解了IPMSG飞鸽传书的网络协议,详细分析并且实现了IPMSG飞鸽传书的消息传递过程,这里就IPMSG飞鸽传书中的文件和文件夹的传输做详细的说明。
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,就说明没有要传输的文件,表头非空,就开始发送报文,获得正确的应答后,就可以开始文件的传输了,文件传输结束,将相应的链表节点删除。这里借鉴了很多程序中使用非常广泛的“命名池”相关的概念,只不过这里我们使用的是“文件池”,可以这么认为,如果有文件要传输,可以不用考虑是否有文件正在传输,只要把要传输的文件放入 “文件池”就可以了 , 同时,不用考虑“文件池”的大小,线程1是文件池的服务线程,它检测文件池的大小,如果非空,就会逐次传输文件。
这里需要特别注意的就是关于文件夹的传输,这个IPMSG飞鸽传书一个难点,应为对与文件夹的内容是没有显示的,需要我们逐次的判断,在飞鸽传书中是这么处理的,如果是一个文件夹,就发送文件属性为IPMSG_FILE_DIR的信息包,IPMSG飞鸽传书客户端收到这个信息包后,就创建这个文件夹,然后发起发送的IPMSG飞鸽传书客户端,进入文件夹,传送文件夹内的文件,如果该文件夹下,还有文件夹,使用相同的方法,在文件夹内的文件传送结束后,就发送IPMSG_FILE_RETPARENT信息包,接受的IPMSG_FILE_RETP报文的IPMSG飞鸽传书客户端,执行返回上一级目录,IPMSG飞鸽传书发送端,就需发送目录下的文件。这样循环操作,最终完成文件的传输,这个过程比较难以理解。
有了上边的知识,文件的接受也可以类推了,同样开启一个线程维护接受文件链表,逐次接受身下的文件,链表为空时,等待。
- ipmsg 文件传输协议
- IPMsg飞鸽传书--文件传输解析
- IPMSG飞鸽传书6--文件传输解析
- IPMSG(飞鸽传书)协议翻译
- IPMSG(飞鸽传书)协议翻译
- IPMSG(飞鸽传书)协议翻译
- IPMSG协议分析第一步
- IPMSG协议知识
- IPMSG(飞鸽传书)协议翻译
- IPMSG(飞鸽传书)协议翻译
- IPMsg飞鸽传书网络协议
- IPMSG(飞鸽传书)协议翻译
- [转载]IPMSG(飞鸽传书)协议翻译
- [转载]IPMSG(飞鸽传书)协议翻译
- ipmsg 文件发送协议解析
- 文件传输协议
- 文件传输协议
- 文件传输协议
- 利用bobo-browse 实现lucene的分组统计功能
- 李开复给中国学生的第二封信——从优秀到卓越
- poi项目apache组织,Java API To Access Microsoft Format Files
- Linux下IPMSG的实现
- 无法在web服务器上启动调试。调试失败,因为没有启用集成windows身份认证
- ipmsg 文件传输协议
- KMP算法
- [转]mysql性能的检查和调优方法
- IPMsg飞鸽传书网络协议解析手记
- 一个简单的非模式对话框在VC下的内存泄漏!
- 配置Eclipse3.3.2和EclipseMe1.7.9和JDK6.0,搭建J2ME开发平台
- 全文搜索 lucene使用与优化
- array数组,arraylist,hashset,vector,linkedlist,速度对比。
- 黑鹰