Chinaunix首页 | 论坛 | 博客
  • 博客访问: 844558
  • 博文数量: 133
  • 博客积分: 7117
  • 博客等级: 少将
  • 技术积分: 1846
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-16 21:30
文章分类

全部博文(133)

文章存档

2012年(1)

2011年(4)

2010年(2)

2009年(57)

2008年(69)

分类: 系统运维

2009-05-22 09:31:48

GPRS:通用分组无线技术(General packet radios service),GSM网络覆盖的区域都可快速实现GPRS的覆盖.

gprs的特点:高速率的数据传输.目前gprs速率达到40kb/s以上,gprs可实现的最高速率是171.2kb/s.EDGE最高速率可达 到384kb\s.可以提供按流量计费方式.快捷登录,永远在线.gprs的用户一开机就始终附着在gprs网络上,登录时间只要1-3秒,远快于普通拨 号方式.

中国移动gprs网络有两个接入点:cmwap和cmnet.

如果使用cmwap接入点连接上gprs网络后手机得到的ip地址形如10.x.x.x,这个地址是一个A类地址,也就是内网地址.这个地址的访问 受到很多限制,它只能够访问gprs网而不能访问整个internet,如果要用这个地址访问internet就需要使用代理服务器,如中国移动的 10.0.0.172的80端口.

如果使用cmnet接入点连接上gprs网络后手机得到的ip地址是一个形如202.x.x.x或者61.x.x.x这样的地址.这是一个C类地址,它可以自由的访问整个internet,也就说它和电脑的上网能力是一样.但是有些地方的移动卡不支持cmnet.

mtk平台手机基于gprs连接pc的实现方式(tcp通讯方式)

1.建立data account(上网账号)

MMI层发送PRT_MMI_PS_SET_GPRS_DATA_ACCOUNT_REQ消息到L4C层,在消息中设定data account 的id(1-10),自定义名称,APN(cmnet,cmwap),用户名,密码,DNS等信息.

2.创建socket

手机上用socket建立连接和pc用socket建立连接的原理是一样的,只是api函数不一样.

kal_int8 soc_create(kal_uint8 domain, socket_type_enum type, kal_uint8 protocol, module_type mod_id, kal_uint32 nwk_account_id);

3.设置socket的异步非阻塞模式

kal_int8 soc_setsockopt(kal_int8 s, kal_uint16 option, kal_uint8 *val, kal_uint8 val_size);

这里的第二个参数option设置为SOC_NBIO(socket非阻塞模式)

kal_int8 soc_setsockopt(kal_int8 s, kal_uint16 option, kal_uint8 *val, kal_uint8 val_size);

这里的第二个参数option设置为SOC_ASYNC(异步i/o)

4.建立连接

kal_int8 soc_connect(kal_int8 s, sockaddr_struct *addr);

5.发送数据

kal_int32 soc_send(kal_int8 s, kal_uint8 *buf, kal_int32 len, kal_uint8 flags);

6.读取数据

kal_int32 soc_recv(kal_int8 s, kal_uint8 *buf, kal_int32 len, kal_uint8 flags);

7.关闭连接

kal_int8 soc_close(kal_int8 s);

 

程序开发要点:

1.实现之前要规定好发送方和接收方数据传输的协议,数据格式.包括如何确定数据长度,校验算法,是否加密等.

2.要注意对其方式和存储方式.如果发送方和接收方的对其方式和存储方式不一样,数据可能会传输错误.

3.错误处理,确保可以捕捉到所有错误,从而关闭socket连接,释放资源.

4.超时设定,由于socket接口没有提供超时功能,所以需要自己实现超时功能,可在每次操作前设定timer,如超时仍没有收到消息,则进行错误处理,特别要考虑到多个socket同时打开的情况.

文章只是简单的介绍了在mtk平台手机上如何使用socket套接字来实现网络通讯,下一篇我会给出一个示例代码来详细说明mtk手机的socket套接字是如何实现异步I/O和消息驱动模型的.

阅读(4308) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~