ipmsg 文件发送协议解析

飞鸽传输协议分析:

IPmsg UDP数据包格式:
       
1程序版本号
       
2数据包序列号
       
3用户名
       
4主机名
       
5命令
       
6消息内容
       
7额外数据
        
1到5的内容是以“:”为分隔符,消息和额外数据以数据“0分隔.(字符0).

IPmsg发送文件的整个逻辑过程:
       
1.发送端发送一个UDP数据包,通知接收端准备接收文件,通知在一个socket上监听TCP连接事件
         2.接收端回发一个UDP数据包,告诉发送端已准备好接收数据,并请求一个TCP的连接
         3.发送端接收连接的请求,并将文件映射到内存中,然后创建发送文件线程,开始进行数据的发送
       
4.接收端创建接收的文件,然后创建接收数据的线程,开始收取数据.接受完以后,将数据写入到创建好的文件中.

飞鸽的协议也属于应用层协议,它描述了飞鸽程序通信时的语法和语义。
       
其语法定义如下(所有的命令字,都必需符合这样的格式要求):
        Ver(1): PacketNo:SenderName:SenderHost:CommandNo:AdditionalSection
       
每部分分别对应为:版本号(现在是1):数据包编号:发送主机:命令:附加数据.

 

1、  登陆

发送协议格式:1:1293954630626:localhost:localhost:3:user

接收协议格式:1:1293954630626:localhost:localhost:3:user

 

 

2、  消息传输:

发送协议格式:1:1293954779744:localhost:localhost:32:hello(发送hello消息)

接收协议格式: 1:1340069361:IPMSG_ANDROID:IPMSG_ANDROID:288:how are you(接收how are you消息)

 

3、  发送文件:

请求发送文件格式:

1:1293954963350:localhost:localhost:2097440:��0:music.mp3:b5f7f7:137a7875fc0:1:��

 

4、  发送文件夹:

然后遍历该文件夹里的文件,如果是文件,则发送,如果是文件夹,则进入文件夹,继续第归遍历,直到该文件夹里的文件全部发送完,再发送一个”.”来表示跳出该文件夹.

格式:

字符串长度:文件名:文件大小:文件类型(1、文件 2、文件夹 3、跳出文件):文件创建时间:文件最后修改时间:

例子:

0033:documents:000000000:2:14=4fe01d24:16=4fe01d24:(先发送一个文件夹documents

0036:Sample Files:000000000:2:14=4fe01d24:16=4fe01d24(发送文件夹 Sample Files

003d:ACME Sales Numbers.xls:015400:1:14=4fe01d24:16=4fe01d24(发送文件ACME Sales Numbers.xls )

003f:ACME Quote-Word 2007.docx:0add9:1:14=4fe01d24:16=4fe01d24(发送文件ACME Quote-Word 2007.docx)

003f:ACME Quote-Word 2003.doc:011600:1:14=4fe01d24:16=4fe01d24: (发送文件ACME Quote-Word 2003.doc)

003d:ACME Presentation.pptx:01dff6:1:14=4fe01d24:16=4fe01d24: (发送文件ACME Presentation.pptx)

003e:ACME Expense Report.xlsx:04389:1:14=4fe01d24:16=4fe01d24: (发送文件ACME Expense Report.xlsx)

002b:.:000000000:3:14=4fe01d24:16=4fe01d24:(跳出文件夹 Sample Files)

002b:.:000000000:3:14=4fe01d24:16=4fe01d24:(跳出文件夹documents)

 

接收文件夹 格式相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值