mtk上实现socket连接

来源:互联网 发布:手机图片编辑软件 编辑:程序博客网 时间:2024/05/22 03:44

首先要在mtk上实现socket连接,需要用到以下函数:

 

1.        创建socket连接

kal_int8 soc_create(kal_uint8  domain,

                    socket_type_enum  type,

                    kal_uint8  protocol,

                    module_type mod_id,

                    kal_uint32 nwk_account_id)

创建socket连接,成功后将返回一个socket_id供以下函数使用.成功运行在手机上的效果是打开黄色边框的GPRS图标,对于手机nwk_account_id的值有10和14分别代表网络接入点cmwap和cmnet由于mtk 只支持cmwap方式故在此我将它设为10.参数说明请参照相关文档。

 

2.      设置socket非阻塞模式

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

 

kal_uint8 val = 1;

soc_setsockopt(socket_id,SOC_NBIO,&val, sizeof(val))

val = SOC_READ | SOC_WRITE | SOC_CLOSE | SOC_CONNECT;

soc_setsockopt(socket_id,SOC_ASYNC,&val,sizeof(val))

 

3.      连接中国移动网关

kal_int8 soc_connect(kal_int8 s, sockaddr_struct *addr)

手机上网与PC上网不同,手机端需要首先连接移动网关才能进行网络通信,这里需要填充结构体sockaddr_struct的addr及port成员。

 

 

4.      发送http请求

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

其中buf字串需要遵守http连接协议。

 

5.      接收数据

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

buf用来保存接收到的字符串,这里需要注意buf的长度不能超过2000,否则上真机的时候一到申请内存空间时就会死机,可以用循环来接收信息。

 

6.      关闭socket连接

kal_int8 soc_close(kal_int8 s)

参数传入soc_create的返回值。

0 0
原创粉丝点击