因为目前事情一堆,也不打算对IPMSG的源代码看的很详细的。毕竟ALC的环境是android。
找了一些网上有关IPMSG协议的文章,目前学习的成果如下:
1、IPMSG发送命令以及消息都使用UDP,文本传输等等都是用TCP;
ALC也打算采用这种方式,TCP部分必须提供一个统一的方便使用的方式;
2、IPMSG采用了加密;
作为刚起步的东东,ALC开始阶段都不考虑加密的问题。但是一定要余留方便的扩展点。
3、IPMSG的命令格式大致为:版本号:包编号:发送者姓名:发送者主机名:命令字:附加信息。整个报文采用字符串的形式发送。
为了和IPMSG区别,版本号上打算使用ALCXX(X为数字)这种方式。命令字第一阶段和IPMSG兼容。
4、具体应用场景分析如下:
登录/离线通知部分:新登录的用户使用广播方式发送命令:我来了。每一个接收到的用户都回应:知道了,同时记录新的用户进入用户列表。
离线也相同,只不过接收到的用户不再做出回应就可以了。
涉及的命令:IPMSG_BR_ENTRY和IPMSG_ANSENTRY,离线的有IPMSG_BR_EXIT;
发送/接收消息部分:直接用户发送命令即可;
涉及的命令:IPMSG_SEND_MSG和IPMSG_SENDCHECKOPT。
两者的差异主要是checkOPT需要回执IPMSG_RECVMSG,回执命令的附加信息是确认的包编号。
文件传输部分ALC第一个版本是不需要实现的。所以先不予理会。