浅谈mtk平台手机通过gprs网络连接pc

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和消息驱动模型的.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值