手机操作系统 第十一章 网络与通信_第1页
手机操作系统 第十一章 网络与通信_第2页
手机操作系统 第十一章 网络与通信_第3页
手机操作系统 第十一章 网络与通信_第4页
手机操作系统 第十一章 网络与通信_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第十一章网络与通信邹仕洪,博士网络与交换国家重点实验室宽带网研究中心zoush@http:///~ZouShihong/symbian网络与交换国家重点实验室宽带网研究中心主要内容symbian中通信的体系结构串口通信套接字通信消息电话网络与交换国家重点实验室宽带网研究中心GPRS(GeneralPacketRadioService)BTSBSCMSCSGSNGGSNInternetPSTNGPRS骨干IP网包交换电路交换GPRSCore网络与交换国家重点实验室宽带网研究中心SymbianOS通信体系结构四个通信服务器串口、套接字、消息、etel(电话)为通信应用提供统一的API任意数量的插件模块利用多态机制提供一个协议或者多个协议的具体实现-服务器将请求转发给插件模块增强了扩展性在CommDB中保存通用(与具体协议无关)的设置通过应用程序或者软件来访问具体协议相关的设置保存在独立的数据库或者对象中IAS:信息访问服务,为IrDA服务保存设置的数据库SDP:服务发现协议数据库,为BT服务保持设置的数据库SMS网络与交换国家重点实验室宽带网研究中心IAPInternetAccessPoint(因特网接入点)手机中可能有多个接入点,存放在IAP表中,是CommDB中的一个表CommdbNameCmmdbIdNetworkServiceTypeServiceWeightBearerBearerTypeHomeRAS11GPRS111MODEMRadGPRS22GPRS212MODEMHomeLAN51LAN121LAN网络与交换国家重点实验室宽带网研究中心PDPContext与InternetPacketDataProtocolPDPContext包括

PDP类型(IPV4,V6)PDP地址, 接入点

QoS等等APNInternet手机ISPISPPAPNGPRSIP地址IP地址PDPContextIPv4IPv6网络与交换国家重点实验室宽带网研究中心层次化的体系结构设备驱动(LDD,PDD)C32系统模块CSY:实现了对串口的访问电话系统模块TSY:访问modem和电话系统协议模块PRT:提供套接字访问和协议栈消息类型模块MTM:提供对特定消息服务的访问网络与交换国家重点实验室宽带网研究中心与通信有关的插件模块CSY:C32SYstemmodules提供一个软件实现的串口使能物理端口的共享为上层协议提供服务DATAPORT.CSY,IRCOMM.CSY,ECUART.CSY,BTCOMM.CSYPRT:PRoTocolmodules为套接字服务器服务,用来实现具体的协议套接字类的协议:唯一的地址和端口可能是一个协议栈-所包含的协议在.esk文件中实现BT.PRT,TCPIP.PRT,IRDA.PRT,PLP.PRT,WAPPROT.PRT,SMS.PRT网络与交换国家重点实验室宽带网研究中心与通信有关的插件模块(续)TSY:Telephony

SYstemmodules核心API:标准的电话函数,例如建立和中止呼叫,基本的GSM扩展API:高级的GSM功能,GPRSAPI,访问电话薄和SMSs实现了symbian和特定厂家相关的信令栈之间的信令交互HAYES.TSY,PHONETSY.TSY,GSMBSC.TSY,GPRSTSY.TSY,CDMA.TSY,MM.TSY,SIM.TSYMTM:MessageTypeModulesUIMTMUIdataMTMClientsideMTMServersideMTMBTSMTM.DLL,MMSS.DLL,MMSCLIENTMTM.DLL网络与交换国家重点实验室宽带网研究中心基本概念:串行和并行串行通信一个信道,一次传输一个bitUSB,通用串行总线并行通信多个信道,一次可以传输多个bit网络与交换国家重点实验室宽带网研究中心基本概念:同步和异步同步通信时钟严格同步,彼此知道对方在发送什么(事先约定好)开销小硬件复杂异步通信不要求时钟同步需要在比特流中插入特殊的“开始”和“结束”比特,以表示一个字符的开始和结束也称启停(start-stop)传输开销大网络与交换国家重点实验室宽带网研究中心串口通信的特征RS-232标准,9-pinD连接器由UART(UniversalAsynchronousReceiverTransmitter)芯片控制最高115,000bps点到点,同步或异步一次只发送一个bit同步方式更快,但需要时钟同步异步方式更容易,只需要保持波特率一致支持红外,通常是通过套接字服务器来使用在异步方式中,由特殊的比特作为数据开始和结束的标记错误通常能由奇偶校验位检查出来支持一些握手选项(XON,XOFF,CTS,RTS)网络与交换国家重点实验室宽带网研究中心串口通信的通信模式初始化加载设备驱动器(EUART1.pdd,ECOMM.ldd)启动服务器,如果服务器没有起来的话(StartC32)加载CSY模块(ECUART)打开打开设备(端口共享的模式,使用端口的模式DTE/CTE)配置波特率是否使用奇偶校验位握手的选项数据传输关闭释放资源网络与交换国家重点实验室宽带网研究中心串口服务器的客户端APIRCommServ->RSessionBase初始化必要的时候StartC32()启动服务器connect()创建一个到服务器的sessionLoadCommModule()加载需要的CSY模块NumPorts()返回加载的CSY模块数量GetPortInfo()提供CSY支持的端口的细节信息RComm->RSubSessionBase打开:Open()打开端口(创建子会话)数据传输:Read(),Write()配置:Config()关闭:Close()网络与交换国家重点实验室宽带网研究中心例子#definePDD_NAME_L("EUART1")

#defineLDD_NAME_L("ECOMM")

User::LoadPhysicalDevice(PDD_NAME);//step1

User::LoadLogicalDevice(LDD_NAME);//step2

StartC32();//step3

RCommServserver;

server.Connect();//step4

server.LoadCommModule(_L("ECUART"));//step5

RComm

commPort;

commPort.Open(server,_L("COMM::0"),ECommExclusive);//step6网络与交换国家重点实验室宽带网研究中心什么是套接字(socket)Socket:anendpointforcommunication可以看成在两个程序进行通讯连接中的一个端点,最早用来访问TCP/IP协议由一个地址(标识主机)和端口号(标识服务)来唯一标识,与具体协议有关由于套接字服务器的存在,套接字的使用与具体的传输协议无关套接字协议通常实现为多态的DLL协议模块,以.prt为扩展名网络与交换国家重点实验室宽带网研究中心套接字服务器-ESOCKBSD-like套接字APIESOCK客户端API在文件es_sock.h中定义RSocketServ处理会话RSocket处理子会话,提供到具体的套接字协议栈的接口与RCommServ和RComm类似其它相关的类TSockAddr定义了一个32字节的套接字地址,具体形式与协议相关RHostResolver提供主机名字的查找功能RServiceResolver提供查找服务的功能-IrDA和BT定义了它们各自的服务查找接口RNetDatabase用来查询网络数据库网络与交换国家重点实验室宽带网研究中心套接字服务器的客户端APIRSocketServ->RSessionBase:用来创建到服务器的会话Connect()NumProtocols()GetProtocol()FindProtocol()StartProtocol()异步地加载协议RSocket->RSubSessionBaseOpen()Bind():设置本地地址Listen():在某个端口监听Accept():接受一个客户端的连接请求网络与交换国家重点实验室宽带网研究中心套接字服务器中可用的协议TCP/IPKProtocolInetUdp

KProtocolInetTcp

KProtocolInetIp

KProtocolInetIcmp

IrDAKIrmux

KIrTinyTP

BluetoothKBTLinkManager

KL2CAPKRFCOMMSMSKSMSDatagramProtocol网络与交换国家重点实验室宽带网研究中心套接字协议-TCP/IP传输控制协议/因特网协议网络与交换国家重点实验室宽带网研究中心数据封装的概念网络与交换国家重点实验室宽带网研究中心TCP/IP套接字代码示例RSocketServ

ss;RSocketsock;//ConnecttothesocketserverUser::LeaveIfError(ss.Connect());//OpenaTCPsocketUser::LeaveIfError(sock.Open(ss,KAfInet,KSockStream,KProtocolInetTcp));//RequesttheSockettoconnecttothedestinationsock.Connect(destAddr,status);

sock.Send(…)网络与交换国家重点实验室宽带网研究中心套接字协议-IrDA一个协议栈(irda.prt),屏蔽了红外通信的物理特性比RS-232更复杂成帧过程7比特的开始和结束序列能够检测帧中多比特错误提供的服务IrCOMM:模拟串并口,只能以9.6kbps发送IrOBEX:数据对象交换建立一个连接并将任意一个对象以比特流的形式发送IrLAN使能对LAN的访问,通过一个接入点允许两个设备直连网络与交换国家重点实验室宽带网研究中心套接字协议-Bluetooth频段-ISM2.4Ghz扩频功率从1-100mW快速应答前向纠错速率大约1Mbps范围:10m左右网络与交换国家重点实验室宽带网研究中心Bluetooth代码示例

RSocketServ

socketServ;

socketServ.Connect();

//ConnectanL2CAPsocket

RSocketsocket;

TRequestStatusstatus;

User::LeaveIfError(socket.Open(socketServ,KBTAddrFamily,KSockSeqPacket,KL2CAP));

User::LeaveIfError(socket.Connect(addr,status));

User::WaitForRequest(status);

if(status==KErrNone)

{

//Writesomesimpledata

_LIT8(KDataToWrite,"01234");

socket.Write(KDataToWrite,status);

User::WaitForRequest(status);

}

//Closesocket

socket.Close();网络与交换国家重点实验室宽带网研究中心套接字协议-SMSCSmsBuffer*smsBuffer=CSmsBuffer::NewL();iMsg=CSmsMessage::NewL(CSmsPdu::ESmsSubmit,smsBuffer);TSmsUserDataSettingssets;sets.SetAlphabet(TSmsDataCodingScheme::ESmsAlphabet7Bit);sets.SetTextCompressed(EFalse);iMsg->SetUserDataSettingsL(sets);iMsg->SetToFromAddressL(iReceiver);]iMsg->SmsPDU().SetServiceCenterAddressL(KSCNumber);User::LeaveIfError(iSocket.Open(iSession,KSMSAddrFamily,KSockDatagram,KSMSDatagramProtocol));RSmsSocketWriteStream

stream(iSocket);TIntret;TRAP(ret,stream<<*(iMsg));User::LeaveIfError(ret);TRAP(ret,Stream.CommitL());User::LeaveIfError(ret);iSocket.Ioctl(KIoctlSendSmsMessage,status,&iPkgBuf,KSolSmsProv);网络与交换国家重点实验室宽带网研究中心套接字的通信模式(步骤)与角色高度相关客户端,还是服务器服务器通常简单,只需等待客户端来连接服务器必须将服务的属性登记到数据库中客户端发现服务器(如果事先不知道它是否存在)发现服务器提供的服务连接到服务器发送或接收数据关闭连接注:第1、2步可以省略,如果事先知道服务器的地址和端口的话网络与交换国家重点实验室宽带网研究中心不同协议的socket使用方式IrDA需指定地址和端口号(通常为任意值)TCP/IP指定地址、端口号、协议和socket类型Bluetooth 指定地址、端口(信道)号、服务设置服务具有唯一的标识服务的属性是三元组的集合<attributeID,type,value>网络与交换国家重点实验室宽带网研究中心主机解析-RHostResolver如果使用的是TCP/IP协议,则为域名解析,充当到DNS的一个接口该接口提供了如下功能:将数字化的网络地址解析为名字描述将名字描述解析为数字地址获取、设置本地设备的名字从RSubSessionBase继承而来,因此,RSocketServ必须首先连接OpenTInt

Open(RSocketServ&aSocketServer,TUint

anAddrFamily,TUint

aProtocol);提供的服务(包括同步和异步方式)voidGetByName(const

TDesC&aName,TNameEntry&aResult,TRequestStatus&aStatus);TInt

GetByAddress(const

TSockAddr&anAddr,TNameEntry&aResult);TInt

GetHostName(TDes&aName);TInt

SetHostName(const

TDesC&aName);网络与交换国家重点实验室宽带网研究中心发送消息(messaging)消息自我包含的数据对象传真(FAX),短信(SMS),彩信(MMS),电子邮件(email)一般特征发送者接收者时间戳内容只对使用消息的程序有意义附件:对特定的程序有意义网络与交换国家重点实验室宽带网研究中心MTMs(MessageTypeModules)每个MTM实现为4个多态DLL每个DLL都从一个抽象类继承而来用户界面MTM(CBaseMtmUi)提供相应的编辑和查看功能客户端MTM(CBaseMtm)解读消息的内容,并提供一个通用功能的最小集,以给用户提供一个统一的与具体的消息类型无关的界面。例如:回复功能reply。UI数据MTM(CBaseMtmUiData)通用消息文件夹:由UIdataMTM提供,内存高效无须加载UI和客户端MTM就可以提供给应用引擎足够的信息,以致能够正确标识消息的类型并呈现给用户。服务器端MTM(CBaseServerMtm)关心消息的格式化和传输。与消息紧密相关的具体协议在该MTM中实现网络与交换国家重点实验室宽带网研究中心网络与交换国家重点实验室宽带网研究中心各种消息类型emailSMTP:邮件发送协议POP3:邮件接收协议IMAP4:邮件接收协议SMS-短信160字节(最多70unicode字符)不像email(文本形式),在查看之前需要解码使用push模式(email使用pull模式)MMS-彩信消息的结构类似于MIME的email消息头部MIME主体内容第一部分为SMIL文件经由GPRS或3G传输网络与交换国家重点实验室宽带网研究中心与访问消息相关的类CMsvSession所有有关消息发送的程序的基础存在ITC(线程间通信)开销用来访问相应的MTM通常一个CMsvSession足矣CMsvEntry:访问、创建消息create,move,delete,accessTMsvEntry:封装了状态和通用的消息头部信息CMsvStore:封装了一个直接文件存储以保存消息文本及协议相关数据网络与交换国家重点实验室宽带网研究中心读取消息-代码示例TMsvId

anId=anIdFromSomeWhere;CMsvSession*session=CMsvSession::OpenSyncL(*this);CleanupStack::PushL(session);CMsvEntry*entry=session->GetEntry(anId);CleanupStack::PushL(entry);DoSomething(entry->Entry());CleanupStack::PopAndDestroy();网络与交换国家重点实验室宽带网研究中心电话服务器(ETel)ETel:EPOCTelephony提供到电话硬件的接口复杂功能的基础fax,DATA,sms,voice独立于运营商应用程序使用标准的API控制和共享对电话服务的访问网络与交换国家重点实验室宽带网研究中心体系结构网络与交换国家重点实验室宽带网研究中心网络与交换国家重点实验室宽带网研究中心ETel

组件客户端API提供给phone应用程序、发送消息等等使用为所有程序提供标准的接口ETel服务器不同电话设备的抽象RTelServer会话LoadPhoneModule()加载TSY模块EnumeratePhones()GetPhoneInfo()在客户端与TSY模块之间转发请求网络与交换国家重点实验室宽带网研究中心TSY模块与电话密切相关与电话硬件打交道,用来访问底层信号处理栈由ETel动态加载所有的TSY继承了以下抽象类CPhoneFactoryBaseCPhoneBase,CLineBase,CCallBase网络与交换国家重点实验室宽带网研究中心核心的ETel客户端API类RTelServer用来访问ETel服务器的会话RPhone通常一个EPOC设备只有一个电话RLine每个电话支持一到多个线路RCall每条线路支持一个或多个呼叫网络与交换国家重点实验室宽带网研究中心GSMAPI(etelbgsm.h,etelagsm.h)核心(RPhone)基本GSMRBasicGsmPhoneRGsmPhoneBookRSmsMessagingRSmsStorage高级GSMRAdvGsmPhone网络与交换国家重点实验室宽带网研究中心拨号-代码示例RTelServerserver;CleanupClosePushL(server);User::LeaveIfError(server.Connect());User::LeaveIfError(server.LoadPhoneModule(KTsyName));TInt

numberPhones;User::LeaveIfError(server.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论