您的位置:首页 > 其它

MTK socket 小结 2

2010-09-03 01:31 190 查看
今天主要讲一下MTK socket 基本接口。MTK socket 主要是基于 Berkeley sockets,用起来也就大同下异。MTK socket 主要有三种模式:block(阻塞),non-block(非阻塞),Asynchronous(异步),组合方式 也只有三种 1 block ,2 non-block,3 non-block + Asynchronous。
block模式下,调用相应的函数(接受或者发送数据),如果这个函数动作没有完成(没有发送或者接受完成),那么函数就不会反回,那么调用的整个task,就会阻塞,进行不了任何动作。如果在MMI MOD 里面直接用这个,那是很危险的,会出现手机没有响应这种假死现象,所以几乎不用这个模式。
non-block 模式下,调用相应的函数,可能返回ok或者block,大部分情况下返回block,表示数据还没有处理完毕,但是函数会立即返回。但是什么时候表示数据处理完成呢,这也是一个比较头疼的事情。这个时候要配合select函数来一起使用,这样就需要自己轮询去查询相应的socket是否可以使用了。一般也不用,效率比较低。
non-block + Asynchronous模式:这个模式推荐使用,可以编成工作中几乎就用这种方式,non-block,就不会阻塞,不会让应用看起来假死,Asynchronous模式,那么当使用函数返回block时,app 只要注册相应的回调函数,当数据处理完毕了,就会收到相应的通知,不用自己去轮询,效率也就高了。
MTK socket 接口声明都在头文件 soc_api.h,接口名字都以soc_ 开头。
1 soc_create 创建一个socket
/*
*    创建一个socket
*    domain:    协议,现在只支持 SOC_PF_INET
*    type :      该domain 下的类型,现在有 SOC_SOCK_STREAM(TCP),SOC_SOCK_DGRAM(UDP),SOC_SOCK_SMS,SOC_SOCK_RAW
*    protocol:   协议类型,除了type 为 SOC_SOCK_RAW,其他都为 0
*    mod_id:   当前模块ID,主要用于接受消息
*    nwk_account_id:apn 接入点
*/
kal_int8 soc_create(kal_uint8         domain,
socket_type_enum  type,
kal_uint8         protocol,
module_type       mod_id,
kal_uint32        nwk_account_id);


 

 

就说了一个函数,有没时间了。。。

待续
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: