`
mmdev
  • 浏览: 12930664 次
  • 性别: Icon_minigender_1
  • 来自: 大连
文章分类
社区版块
存档分类
最新评论

《BREW进阶与精通——3G移动增值业务的运营、定制与开发》连载之88——BREW应用向其他平台的移植

阅读更多

以把一个BREW上功能移植到Symbian平台为例,看一下具体的实现方式。由于网络应用的重要地位,这里先使用BREW3.xISockPort建立一个TCP的连接。首先,初始化服务器的地址:

pME->m_saSockAddr.wFamily = AEE_AF_INET;

pME->m_saSockAddr.inet.port = HTONS(SERVER_PORT);

INET_PTON(pMe->saSockAddr.wFamily, SERVER_ADDR, &(pMe->saSockAddr.inet.addr));

然后创建并打开ISockPort

ret = ISHELL_CreateInstance(pME->m_pIShell, AEECLSID_SOCKPORT, (void**)&(pME->m_pISockPort));

ret = ISOCKPORT_OpenEx(pME->m_pISockPort, AEE_AF_INET, AEE_SOCKPORT_STREAM, 0);

接下来建立TCP连接,

ret = ISOCKPORT_Connect(pME->m_pISockPort, &pME->m_saSockAddr);

if (AEEPORT_WAIT == ret){

ISOCKPORT_WriteableEx(pME->m_pISockPort,&pME->m_cbWriteCallback, MyApp_TryConnect, pME);

return;

}

建立连接成功后,就可以从服务器读写数据了

ret=ISOCKPORT_Write(pME->m_pISockPort,pME->m_caWriteBuffer + pME->m_nBytesWritten, BUFFER_SIZE - pME->m_nBytesWritten);

// retry later

if (AEEPORT_WAIT == ret){

ISOCKPORT_WriteableEx(pME->m_pISockPort, &pME->m_cbWriteCallback, CApp_TryWrite, pME);

return;

}

最后,取消回调并释放ISockPort接口。

CALLBACK_Cancel(&pME->m_cbReadCallback);

CALLBACK_Cancel(&pME->m_cbWriteCallback);

IBASE_Release((IBase*)(pME->m_pISockPort));

Symbian 是使用C++的,移植以上功能的时候,需要使用Symbian OS 中客户端服务器框架。首先从 CActive 创建自己的对象:

#include <e32base.h>

#include <in_sock.h>

#include <es_sock.h>

class CTCPConnector : public CActive

{

private:

// these are some of the classes relevant to opening a TCP connection:

TInt iState;

RSocket iSocket;

RSocketServ iSocketServer;

RHostResolver iResolver;

TInetAddr iAddress;

}

然后定义服务方法

void CTCPConnector::MakeOutgoingConnectionL(const TDesC& aHost, TInt aPort){

...

iState = EGetByName;

iResolver.GetByName( /* parameters required for resolving a host */);

...

}

接下来实现建立连接的方法

void CSEIConnector::ConnectSocketL(void){

...

iSocketServer.Connect();

...

iSocket.Open(iSocketServer, KAfInet, KSockStream, KProtocolInetTcp);

...

iSocket.Connect(/*parameters required connecting */);

...

iSocket.Connect(iAddress, iStatus);

iState = ESocketConnect;

...

}

最后实现RunL() 来处理事件通知:

void CTCPConnector::RunL(){

TInt error = KErrNone;

switch(iState)

{

case EGetByName:

{

ConnectSocketL();

break;

}

case ESocketConnect:

{

ProcessRequestL();

break;

}

}

}

Symbian中的工作流程是这样的,客户端调用MakeOutgoingConnectionL() MakeOutgoingConnectionL()首先发起 DNS 查询,如果域名被成功解析,则开始调用CTCPConnector::RunL()。在CTCPConnector::RunL()中,先要检查请求的状态,如果当前状态值是EGetByName就可以调用ConnectSocketL()了。在ConnectSocketL()中,要创建客户端和服务器的类以及相应的RSocket RSocketServer。最后,调用RSocket::Connect() 来创建正在的TCP连接,无论连接成功或者失败,都将再一次运行RunL(),具体的数据读写过程以此类推。

分享到:
评论

相关推荐

    深入brew开发 brew进阶资料

    深入brew开发,很好的参考进阶资料。对于学习C语言也很有一定的帮助。

    BrewMP应用开发与移植

    非常全面的介绍了BrewMP的开发工具,应用开发流程,常用的API接口,应用开发技巧以及移植的流程等。

    BREW 面向对象特点及其应用.pdf

    BREW开发培训系列——高级——BREW 面向对象特点及其应用.pdf

    BREW平台与演进.pdf

    BREW开发培训系列——BREW平台与演进——BREW概述、发展现状及趋势

    brew开发者进阶教程

    联通博路编写的开发者进阶教程,pdf版本,转载。 共18部分: 第一部分目录如下: Brew概述 Brew技术演进 ...Brew与其他技术的对比 以后各部分为具体接口介绍,对刚接触Brew系统的开发人员应该有一定帮助。

    brew开发超级全的资料、文档

    (BREW 开发者 进阶教程)第1章 BREW平台与演进 第2章 BREW3.1图像处理高级编程 第3章 BREW多媒体接口 第4章 IVocoder接口介绍 第5章 ICamera接口 第6章 BREW 常用接口介绍 第7章 BREW 3.1 文件系统 第8章 BREW ...

    深入brew开发 brew及buiw进阶手册

    此书简洁而深入的介绍了brew的基本原理,非常适合已经入门但是还未从整体上掌握的brew开发者。

    如何开发易移植的Brew应用

    随着手机软件市场的不断扩大,越来越多的开发者们致力于移动应用的开发,本文简要论述了在BREW和J2ME平台下应用程序开发的特点和区别,并从接口和框架设计方面提出了易于进行平台移植的方法,以便于帮助那些准备将...

    BREW平台及业务介绍

    BREW平台及业务介绍BREW平台及业务介绍

    mac0S_brew慢的问题.zip brew使用国内镜像解决下载慢的问题

    ———————————————————————————————————————————— 替换bottles 镜像源(可选) 该镜像是 Homebrew 二进制预编译包的镜像。 临时替换 export HOMEBREW_BOTTLE_DOMAIN=...

    BREW 语音呼叫业务.pdf

    BREW开发培训系列——高级——BREW 语音呼叫业务

    brew小论文(很有参考价值)

    基于brew嵌入式平台的面向对象的应用开发方案.pdf 基于BREW手机游戏的内存管理研究.pdf 基于BREW应用中的随机地图的铺设研究.pdf 基于多平台的移动终端网络应用研究.pdf 类多态机制在BREW平台下的实现.pdf 人工智能...

    BREW 开发者 进阶教程(共18章)

    BREW 开发者 进阶教程(共18章)BREW 开发者 进阶教程(共18章)BREW 开发者 进阶教程(共18章)BREW 开发者 进阶教程(共18章)

    基于BREW平台的应用论文集

    5.基于BREW 平台的POC 应用研究及业务发展分析.pdf 6.基于BREW 平台的数据压缩.pdf 7.基于BREW 应用中的随机地图的铺设研究.pdf 8.基于BREW平台的手机应用绘图的优化方法.pdf 9.基于BREW与组件技术的智能手机邮件...

    论文研究-基于brew平台下短信增值业务的设计与实现 .pdf

    基于brew平台下短信增值业务的设计与实现,张冬梅,,在3G移动通信网络中,基于短消息业务平台提供的短消息增值业务将有着巨大的市场需求。本文通过对BREW(Binary Run Environment Wireless,无线�

    使用BREW开发定位应用程序

    使用BREW开发定位应用程序使用BREW开发定位应用程序使用BREW开发定位应用程序使用BREW开发定位应用程序使用BREW开发定位应用程序使用BREW开发定位应用程序

    BREW编程经验——Dialog机制的使用方式.doc

    BREW编程经验——Dialog机制的使用方式.doc

    中国电信全网增值业务合作管理办法-BREW业务分册.pdf

    为了优化全网增值业务合作管理,促进业务健康发展,在《中国电信移动增值业务合作管理 ... 现发布《中国电信全网增值业务合作管理办法(V2.0版)》,包括总册、短信业务分册、彩信业务分册、WAP业务分册、BREW业务...

    brew 手机游戏开发实例brew 手机游戏开发实例

    brew 手机游戏开发实例brew 手机游戏开发实例brew 手机游戏开发实例brew 手机游戏开发实例

Global site tag (gtag.js) - Google Analytics