基于WSP/WTP的MMS传输(3)——MMS 传输
2011-08-28 22:42
281 查看
MMS 的传输过程如下:
1、 移动端通过GPRS拨号使设备成为无线网络上的一个节点
在wince平台下,拨号使用的设备类型为RASDT_Modem,本地号码是~GPRS!,如果是移动号码,节点是:CMWAP。联通的节点是:UNIWAP。设定这些参数的API分别是lineGetDevConfig(设定接入点)和RasSetEntryProperties(设定号码),测试sim卡能否正常拨号的一个方法是用串口工具向和PC连接的model发送AT命令。对无线模块GPRS拨号上网,需要用到AT+CGDCONT和ATD这两条指令:
1) AT+CGDCONT=l,“IP”,“CMWAP”
此命令用于设置GPRS接入网关,其中第二个参数表示PDP (Packet Data Protocol)类型为:IP或PPP,第三个数表示接入网关为移动梦网,APN是CMWAP,表示中国移动网应用接口。目前只有中国移动全球通卡才可以使用CMNET功能,而动感地带只能使用CMWAP功能。联通的则用UNIWAP。
2) ATD *99***1#
ATD用于设置拨号方式,进行拨号,并设法进入在线(on-line)状态。与传统的电话线Modem相比较,ATD指令在GPRS中有些变化,采用如下两种格式:
格式一:ATD*99[*[<called address>][*[<L2P>][*[<cid>]]]]#
其中99是个服务码,也可用98的(见格式二),国内一般用99: <called address>是w.x.y.z格式的IP V4地址;<L2P>是用于TE和ME连接的Layer2协议或用于PPP协议的Layer2协议;<cid>是表明PDP上下文的一个数字编号,用AT +CGDCONT命令创建,一般为1, 20
格式二:ATD*98[*<cid>]#
含义同上。
举例如下:
ATD*99# //用服务码99建立一个连接
ATD*99* 123.124.125.126*PPP* 1#
//用服务码99建立一个连接HIP地址123.124.125.124, L2P=PPP,用CID 1, //CID的值由AT十CGDCONT事先指定
ATD*99***1# //用服务码99建立连接,CID =1,其它用事先指定的值
ATD*98*1#//用服务码98建立一个IP连接,CID =1
国内最常用的是:ATD *99***1#,本设计中就采用了此种格式。
用ATD指令若能拨号上线则返回“CONNECT”,否则返回“NO CARRIER”。
这样,就完成了拨号上GPRS网络的功能,即接收到无线模块返回的“CONNECT",说明无线模块已经连上了移动GPRS的WAP网关,之后即为通过三阶段协商建立PPP链路的过程。
这里要说明的是如果拨完号后显示CONNECT,然后显示几串乱码,最后显示NO CARRIER就再也没有反映了,这是由于你的model没有自带的PPP协议,对于网络上的握手信号没有应答的缘故,由于我们有自己的OS,上面实现了PPP协议,所以可以不用管。
2、 通过Socket的UDP协议建立与WAP网关(10.0.0.172:9201)的连接
这里要注意的是建好socket后,用sendto 发送数据时,如果函数调用成功,并不代表数据发送成功,sendto只是在把数据成功放入发送队列后,不管发送与否,立即成功返回,判断数据是否成功发送的一个方法就是看目的服务器是否有响应,即recvfrom是否收到数据。
3、 建立连接以后再通过WSP协议Connect PDU与彩信服务中心建立会话
这里的Connect指的是WSP协议的Connect方法,Connect PDU有固定的打包格式,里面包含彩信服务中心的地址(如移动的彩信服务中心http://mmsc.monternet.com),我会在后面介绍。同样,WSP PDU需要经过WTP协议打包后最终以WTP PDU的形式发送出去。如果成功,WAP网关会给返回一个ConnectReply PDU。
4、 发送MMS,把按MMS协议打包好的数据通过WSP协议Post PDU发送出去 。如果是接收,则通过发送带有接收Uri的Get PDU来实现。
除了接收MMS使用Get方法外,其它的请求都用Post PDU。网关对Get PDU的成功响应是返回一个包括以所接收MMS内容为Data的Result PDU。
5、断开与彩信服务中心的连接
这个操作使用WSP协议的Disconnect方法,里面唯一的参数是ConnectReply里的任务号(Session ID)。网关对这个请求是没有响应的,也就是说网关不会换回任何的PDU。
到此,整个MMS会话过程结束。后面结合我自己的设计例子对MMS传输整个过程的PDU结构和编码进行详细的介绍。
转载请注明出处
1、 移动端通过GPRS拨号使设备成为无线网络上的一个节点
在wince平台下,拨号使用的设备类型为RASDT_Modem,本地号码是~GPRS!,如果是移动号码,节点是:CMWAP。联通的节点是:UNIWAP。设定这些参数的API分别是lineGetDevConfig(设定接入点)和RasSetEntryProperties(设定号码),测试sim卡能否正常拨号的一个方法是用串口工具向和PC连接的model发送AT命令。对无线模块GPRS拨号上网,需要用到AT+CGDCONT和ATD这两条指令:
1) AT+CGDCONT=l,“IP”,“CMWAP”
此命令用于设置GPRS接入网关,其中第二个参数表示PDP (Packet Data Protocol)类型为:IP或PPP,第三个数表示接入网关为移动梦网,APN是CMWAP,表示中国移动网应用接口。目前只有中国移动全球通卡才可以使用CMNET功能,而动感地带只能使用CMWAP功能。联通的则用UNIWAP。
2) ATD *99***1#
ATD用于设置拨号方式,进行拨号,并设法进入在线(on-line)状态。与传统的电话线Modem相比较,ATD指令在GPRS中有些变化,采用如下两种格式:
格式一:ATD*99[*[<called address>][*[<L2P>][*[<cid>]]]]#
其中99是个服务码,也可用98的(见格式二),国内一般用99: <called address>是w.x.y.z格式的IP V4地址;<L2P>是用于TE和ME连接的Layer2协议或用于PPP协议的Layer2协议;<cid>是表明PDP上下文的一个数字编号,用AT +CGDCONT命令创建,一般为1, 20
格式二:ATD*98[*<cid>]#
含义同上。
举例如下:
ATD*99# //用服务码99建立一个连接
ATD*99* 123.124.125.126*PPP* 1#
//用服务码99建立一个连接HIP地址123.124.125.124, L2P=PPP,用CID 1, //CID的值由AT十CGDCONT事先指定
ATD*99***1# //用服务码99建立连接,CID =1,其它用事先指定的值
ATD*98*1#//用服务码98建立一个IP连接,CID =1
国内最常用的是:ATD *99***1#,本设计中就采用了此种格式。
用ATD指令若能拨号上线则返回“CONNECT”,否则返回“NO CARRIER”。
这样,就完成了拨号上GPRS网络的功能,即接收到无线模块返回的“CONNECT",说明无线模块已经连上了移动GPRS的WAP网关,之后即为通过三阶段协商建立PPP链路的过程。
这里要说明的是如果拨完号后显示CONNECT,然后显示几串乱码,最后显示NO CARRIER就再也没有反映了,这是由于你的model没有自带的PPP协议,对于网络上的握手信号没有应答的缘故,由于我们有自己的OS,上面实现了PPP协议,所以可以不用管。
2、 通过Socket的UDP协议建立与WAP网关(10.0.0.172:9201)的连接
这里要注意的是建好socket后,用sendto 发送数据时,如果函数调用成功,并不代表数据发送成功,sendto只是在把数据成功放入发送队列后,不管发送与否,立即成功返回,判断数据是否成功发送的一个方法就是看目的服务器是否有响应,即recvfrom是否收到数据。
3、 建立连接以后再通过WSP协议Connect PDU与彩信服务中心建立会话
这里的Connect指的是WSP协议的Connect方法,Connect PDU有固定的打包格式,里面包含彩信服务中心的地址(如移动的彩信服务中心http://mmsc.monternet.com),我会在后面介绍。同样,WSP PDU需要经过WTP协议打包后最终以WTP PDU的形式发送出去。如果成功,WAP网关会给返回一个ConnectReply PDU。
4、 发送MMS,把按MMS协议打包好的数据通过WSP协议Post PDU发送出去 。如果是接收,则通过发送带有接收Uri的Get PDU来实现。
除了接收MMS使用Get方法外,其它的请求都用Post PDU。网关对Get PDU的成功响应是返回一个包括以所接收MMS内容为Data的Result PDU。
5、断开与彩信服务中心的连接
这个操作使用WSP协议的Disconnect方法,里面唯一的参数是ConnectReply里的任务号(Session ID)。网关对这个请求是没有响应的,也就是说网关不会换回任何的PDU。
到此,整个MMS会话过程结束。后面结合我自己的设计例子对MMS传输整个过程的PDU结构和编码进行详细的介绍。
转载请注明出处
相关文章推荐
- 基于WSP/WTP的MMS传输(2)——MMS的传输模型
- 基于WSP/WTP的MMS传输(8)——测试工具
- 基于WSP/WTP的MMS传输(11)——WSP Content Type
- 基于WSP/WTP的MMS传输——MMS 传输
- 基于WSP/WTP的MMS传输(9)——开发中要解决的问题
- 基于WSP/WTP的MMS传输(2)——MMS PDU结构
- 基于WSP/WTP的MMS传输——MMS的传输模型
- 基于WSP/WTP的MMS传输——MMS PDU结构
- 基于WSP/WTP的MMS传输(4)——WSP 协议的实现
- 基于WSP/WTP的MMS传输(2)——MMS的传输模型
- 基于WSP/WTP的MMS传输(3)——MMS PDU结构
- 基于WSP/WTP的MMS传输(5)——完整MMSWSP/WTP打包示例
- 基于WSP/WTP的MMS传输(4)——WTP协议的实现
- 基于WSP/WTP的MMS传输(6)——MMS Notification 解析
- 基于WSP/WTP的MMS传输(5)——WTP协议的实现
- 基于WSP/WTP的MMS传输(5)——WSP 协议的实现
- 基于WSP/WTP的MMS传输(4)——MMS 传输
- 基于WSP/WTP的MMS传输(1)——概述
- 基于WSP/WTP的MMS传输(3)——MMS PDU结构
- 基于WSP/WTP的MMS传输(1)——概述