上篇文章从接收彩信的角度出发貌似已经走入死胡同了,换一个思路,既然彩信发送实质是向手机上设置的彩信网关发一个含有Post信息的http请求包,那么我们就可以从发送的角度入手,自己写一个彩信网关,然后再把手机的彩信网关设置成自己的网关,服务器就能接收到彩信了,当然前提是你的服务器需要有一个公网的IP。
按着这个思路,我在服务器上建立了一个socket,监听41237端口,然后在手机上把彩信网关、代理全都设置成服务器地址,用手机发送彩信,果然服务器接收到了彩信数据,用hexdump看一下,截图如下:
接收到彩信之后,接下来就是一个彩信内容解码问题,根据抓包分析以及查阅相关文档,在经历了一个很痛苦的过程之后,总算写好了彩信内容的解析器,大概的解析思路是这样的。(详细过程可以看http://www.cnblogs.com/mlog/archive/2011/01/16/2456362.html以及http://blog.csdn.net/linxuliang/article/details/6675953,我只给出大概)。
当socket流读入的时候,首先遇到的是http请求,http请求分为多行,每行都以/r/n也就是16进制的0x0d和0x0a结尾,当遇到两个连续的/r/n的时候,http头部分结束。
接下来遇到的是mms