移动开发平台网络引擎的开发概述(1)

做Symbian的网络开发将近一年,在程序网络模块的开发上还是有一些心得的。和大家分享一下。

如何设计一个可靠的,并且能够良好移植的网络引擎,简单的说有三点:

1.有一个底层http模块(Net),该模块负责具体的接入点选择,网络报文的组装,收发,超时控制,差错处理。
2.在Net模块之上,有一个引擎模块(Engine),负责控制程序的流程,业务的走向。
3.Net模块和Engine模块有低耦合的回调通信机制,即net模块可以将收到的数据顺利的提交给Engine进行处理,但不依赖于Engine.

手机操作系统肯定会提供http的库,不要告诉我你一直用的socket做网络,http库相对最基本的socket主要提供了一个报文解析,你不需要手动去解析http header&body里面的各项参数和内容,一般会有框架给的一个专门的回调函数把这些值传给我们,以symbian为例

void CMyHttpModule::MHFRunL(RHTTPTransaction aTransaction, const THTTPEvent& aEvent)
{
switch (aEvent.iStatus)
{
case THTTPEvent::EGotResponseHeaders:
{
RHTTPResponse resp = aTransaction.Response();
TInt status = resp.StatusCode();
if (status != 200)
{
aTransaction.Close();
return;
}
}
break;

case THTTPEvent::EGotResponseBodyData:
break;

case THTTPEvent::EResponseComplete:
break;

case THTTPEvent::ESucceeded:
break;
case THTTPEvent::EFailed:
break;

default:
break;
}
}


MHFRunL就是系统框架在收到报文的时候回调给Http模块的回调函数,光看名字就能知道每个case处理的是什么内容了吧?

收的问题系统API已经替我们做了,我们只需要对每一次事务做出处理就行了,那发的问题怎么解决呢?http库不会让你一个字一个字去拼http的header和内容的,调用相应的api即可,对Http头和内容的组织形式,相关参数的意义请自行去官网查阅。

累了,先写到这儿,明天继续~~
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值