




已阅读5页,还剩51页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
套接字,2,套接字,本讲义提供一个通信套接字函数的初步概念描述套接字在SymbianOS的实现包括套接字服务器架构主要被使用的类协议模块插件的角色与特性,3,套接字介绍,正确认识定义和描述一个网络套接字的高级说明正确认识独立传输的描述知道面向连接和无连接的套接字的不同点流式与数据报式传输的不同以及与他们相关的连接与无连接套接字,4,套接字介绍,套接字由麻省理工学院林肯实验室正式定义在1971年的RFC147发布加利福尼亚大学,伯克利分校引入了后来实际成为套接字的API在1980年发布BSDUnix4.2在讲稿中我们将集中在网络套接字注意套接字可用于许多不同的技术包括红外,USB及蓝牙,5,典型套接字属性,一个套接字是在两个或多个软件进程的通信终点通信是双向的:任意一个直接的点到点连接两个近似的进程连接客户端-服务器连接每个通信进程执行不同的角色举例:一个网络浏览器和一个网络服务器,6,一个套结字有3个特征或参数:1.通信域地址或套接字格式举例:一个互联网套接字(KAfInet)有一个地址和端口号2.套接字类型代表流式连接或数据报无连接这预示将要使用KSockStream或KSockDatagram3.与域相对应的传输协议一个流式互联网套接字需要使用由KProtocolInetTcp代表的TCP/IP协议,典型套接字属性,7,典型套接字属性,一个SymbianOS套接字中的典型TCP/IP将按照如下的方式使用:更多详细实例很快出现,iSocket.Open(iSocketServ,KAfInet,KSockStream,KProtocolInetTcp);,8,连接与无连接,一个面向连接的通信协议在任何数据发送之前建立一个端到端的连接存在的连接带来可靠的保证它带有传送顺序、数据到达以及差错控制这是我们平时听到的“可靠的”,9,连接与无连接,一个无连接的通信协议每次数据发送的时候需要提供目的地址它仅仅用来发送数据报它没有预先建立的端到端连接它没有状态只要数据包到达它是经过处理与前面完全独立的数据报套接字不能提供顺序保证、传送重复这是我们平时听到的“不可靠的”,10,阻塞与非阻塞,套接字可以使用两种方式之一进行操作阻塞于非阻塞阻塞套接字操作是同步的套接字不把控制权返回给程序调用处直到它完成操作非阻塞套接字操作是异步的立刻返回控制权取消附加的结构来监控数据(到达/完成),11,OSI参考模型与网络套接字,提供内容网络套接字如何被使用我们将简要检查UDP/TCP/IP层(传输层与网络层)在开放系统互连(OSI)参考模型OSI模型是一个7层模型依据通信功能封装每一层为上层提供支持并独立执行,12,OSI参考模型与网络套接字,应用层、表示层与会话层对于TCP/IP看作一个单一的实体为常规应用提供适当的协议和相应的API,13,OSI参考模型与网络套接字,传输层发送和接收数据段网络层在传送数据时将数据段分割放如数据包在接收数据的时候重新将包集合成数据段每个数据包中包含地址信息和相关控制信息数据链路层提供同步通过物理层的帧错误和流控制物理层处理硬件媒介,14,OSI参考模型与网络套接字,TCP是传输级面向连接协议为可靠传输数据提供内建流控制在网络节点或程序之间TCP通过包发送给网络层IP协议,15,OSI参考模型与网络套接字,UDP是传输级无连接协议比TCP更轻量级不能够在数据到达目的地时的任何确认在出现错误时重新传输数据任何性质的握手UDP被用在速度流畅但可靠性不是至关重要举例:网络多人游戏,16,OSI参考模型与网络套接字,IP是网络级协议在TCP和UDP的上层TCP和UDP包在IP包的数据区内IP是无连接的数据传输通过包从来源地流向目的地SymbianOS包含套接字支持为互联网和本地网络通信提供TCP,UDP和IP,17,注意,其他类型套接字例如蓝牙和红外以及其他SymbianOS没有支持地址族并且流式和数据报套接字类型还包括:原始套接字,头和数据负载已提供序列,不使用流式连接提供提供正确顺序保证可靠传送报文套接字(RDM),18,SymbianOS套接字架构,示范一个SymbianOS对套接子支持的基本理解认识RSocketServ,RSocket和RHostResolver类的特性理解PRT协议模块的角色和意图,19,SymbianOS套接字架构,SymbianOS提供一个套接字框架提供一套与BSD系统C套接字API相似的C+API支持使用互联网协议组进行通信允许其他类型的通信包括蓝牙,USB和红外线更低层(“comms”)通信架构处理任何通信因此套接字API可以被使用在独立传输通道我们现在检查框架和插件结构SymbianOS套接字编程主要类,20,框架与协议模块插件,SymbianOScomms系统提供支持动态加载协议模块使用套接字API意味着应用程序代码为了使用一种协议可以被简单的修改一边使用不同的协议SymbianOS套接字服务器提供在两个可以设定地址的终点间通信(套接字)调用ESOCK.EXE,21,ESOCK客户-服务器关系概述,TCP/IP,蓝牙,客户端,RSessionBase,RSubSessionBase,RSocketServ,IPC至套接字服务器通信通道,RHandleBase,RCommsSubSession,RSocket,套接字服务器包含一个插件框架(*.prt)允许不同协议提供套接字服务,会话,子会话,服务器,IPC分界,套接字导向API,esock.lib,esock.exe,22,框架与协议模块插件,除此之外连接到套接字主机名解析读写数据套接字框架还提供查询协议信息允许调用代码确定手机支持的套接字协议,23,框架与协议模块插件,SymbianOS套接字API由es_sock.h发布调用代码使用由esock.dll提供的客户端一侧实现的类对服务器进行异步调用这将让客户端访问套接字服务协议模块为请求的特定联网协议提供支持,24,框架与协议模块插件,除此之外连接到套接字主机名解析读写数据套接字框架还提供查询协议信息允许调用代码确定手机支持的套接字协议,25,RSocketServ,RSocketServ是客户端执行类用以和套接字服务器进行通信与用来和文件服务器通信的客户端类RFs类似,26,RSocketServ,编写代码向套接字服务器发送请求一个RSocketServ对象必须被初始化通过调用Connect()和套接字服务器建立一个会话最初使用RSocketServ实例建立通信子会话为Rsocket和RHostResolver,27,RSocketServ,任何RSocket对象通过会话打开的会自动关闭当通过调用RSocketServ:Close()中断一个会话不能重新使用然而推荐在每个子会话对象中调用Close()在会话关闭前RSocketServ可以被用来调用异步函数欲加载一个PRTRSocketServ:StartProtocol(),28,RSocketServ,然而客户端程序通常不需要调用RSocketServ:StartProtocol()作为加载一个被套接字服务器自动管理的协议当那个协议套接字被打开的时候一些应用程序可能需要确定一个打开套接字调用不会用掉大量时间因此使用StartProtocol()例如应用程序使用IrCOMM,29,RSocketServ,RSocketServ:GetProtocolInfo()可以被用来获得一个协议性能和属性的全面描述返回一个TProtocolDesc对象RSocketServ:NumProtocols()可以被用来获取当前套接字服务器的协议数量RSocketServ不是被用来发送/接受数据或建立连接RSocket子会话提供API调用这些函数,30,RSocket,RSocket是所有套接字基础通信的终点是RSocketServ子会话类每个对象实例表现一个单一的套接字,31,RSocket,RSocket相关方法为多数BSD网络API函数客户端套接字接口允许:套接字打开激活连接读取和写入数据被动连接(通过监听/接受模式),32,RHostResolver,RHostResolver被用来做主机名解析提供一个标准接口实现协议-特定主机-解析服务,RHostResolver,RCommsSubSession,33,RHostResolver,举例IP地址对人来说很难记住所以域名被用来替代它它更好记比起这个好216.109.118.77!主机名解析服务被用在互联网域名系统(DNS)DNS负责将对人来说可读性好的域名解析为IP地址,34,RHostResolver,RHostResolver类提供一个把给定的域名解析成IP地址的方法以及把IP地址对应相应的域名RHostResolver:GetByName()转换服务器名到IP地址,35,RHostResolver,蓝牙与红外解析接口可以被用来发现周围使用这些协议可以通信的设备通过RHostResolver对象查询TNameEntry描述符中的包被TNameRecord对象拥有包含主机名和地址,36,RHostResolver,RHostResolver同样提供函数允许获取和设置本地设备的主机名既然接口通用执行是每个协议模块个别提供不是所有协议模块提供RHostResolver提供的全部服务,37,RHostResolver,如果协议不支持指定的操作函数返回KErrNotSupportedRHostResolver是一个子会话对于一个活动的套接字服务器会话来说一个主机解析子会话为通过适当交验的特定协议而打开,38,使用SymbianOS套接字,正确认识打开和配置面向连接及无连接的套接字模式知道哪些RSocketAPI方法可以用来连接和断开套接字以便发送接受数据知道同步和异步关闭RSocket子会话的特性,39,初始化与打开套接字,在一个RSocket子会话能被打开前一个带有套接字服务器的会话必须被建立通过调用RSocketServ:Connect()一旦一个服务器会话被获得一个套接字可以通过调用一个RSocket:Open()的重载被打开每个带有已连接套接字服务器的绘画作为参数其他参数可以被指定包含协议类型套接字类型(流式接口或数据报)套接字地址族,40,配置与连接套接字,一旦套接字打开它被不同的配置依据套接字是否无连接或面向连接无连接套接字被配置为带有本地地址使用特定版本的I/O调用它包括远程套接字地址RSocket:Bind()方法为无连接套接字分配本地地址,41,配置与连接套接字,在它可以发送或接收数据前在RSocket:Bind()之后必须紧接着调用RSocket:Open()一旦无连接套接字被绑定到本地地址它准备好发送或接收数据使用SendTo()或RecvFrom()指定远程地址,42,配置与连接套接字,连接套接字配置为带有远程套接字地址在整个连接期间他们保持配合一个客户端套接字调用RSocket:Connect()异步方法经过地址连接到远程套接字等待远端完成连接如果一个套接字未绑定还没有在上面调用Bind()将自动获取一个本地地址分配给它,43,配置与连接套接字,一个服务端套接字必须使用2个套接字一个绑定到本地地址通过调用Bind()被用来监听客户端的进入连接使用RSocket:Listen()一个空白的套接字传给RSocket:Accept()用来接受客户端连接,44,配置与连接套接字,初识Listen()方法是同步的建立绑定套接字队列用来收集连接请求Accept()方法是异步的等待接入连接当异步连接完成空白套接字作为新套接字给定的句柄它之后被用来输送数据,45,配置与连接套接字,同样可以调用Connect()在一个无连接套接字Bind()调用可以被忽略Send(),Write()及Recv()可以用来代替它允许软件最初写为面向连接协议可以快速移植为使用无连接,46,RSocket:RecvFrom(),无连接套接字的读和写需要I/O请求中指定的远程地址RSocket:RecvFrom()方法可以被用来从无连接套接字中读取相当于Read(),Recv()orRecvOneOrMore()方法仅仅在面向连接套接字可以被使用的,47,RSocket:RecvOneOrMore(),RSocket:RecvOneOrMore()是一个异步请求Isanasynchronousrequest当连接上的数据有效时完成接收缓冲特定的8-bit描述符接收到的数据添加到这个缓冲描述符的大小被更新以便适应接收到的字节数,48,从套接字读取,流式套接字例如TCP,RSocket:Recv()将不完成直到整个描述符被数据填充指定接收描述符的最大长度不像RecvOneOrMore()接受到任何数量的数据就完成除非它知道将要接受多少数据Recv()不会用在TCP或其它流式连接协议,49,RSocket:RecvFrom(),RSocket:RecvFrom()接收UDP数据并提供:数据被接收数据发送终点地址所有读取方法是异步的提供一个接收数据的缓冲取消方法一个套接字被取消读取后的情形根据协议特征定义,50,RSocket:SendTo(),RSocket:SendTo()用来向无连接套接字写入数据有这些参数数据报发送地址一个数据缓冲区控制传
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年福建省泉州市永春县永源城市建设有限公司招聘11人考前自测高频考点模拟试题及一套答案详解
- 2025年9月27日湖南省供销合作总社遴选业务水平测试面试真题及答案解析
- 2025年降台铣床项目发展计划
- 2025年脑病医院项目建议书
- 小学安全专项培训内容课件
- 2025广东中山市港口镇水务事务中心招聘勤杂工6人考前自测高频考点模拟试题及一套参考答案详解
- HO-PEG-NH-Fmoc-MW-3400-生命科学试剂-MCE
- H1L1A1B3-生命科学试剂-MCE
- Glycidyl-behenate-d5-生命科学试剂-MCE
- 生物产业市场预测与投资机会研究
- 2025年度反洗钱阶段考试培训试考试题库(含答案)
- 2025年甘肃省兰州市榆中县招聘乡村医生考试参考试题及答案解析
- 收割芦苇施工方案
- 燃气入户安检课件
- 普通黄金现货购买合同8篇
- 预防静电安全知识培训课件
- 三力测试考试题库及答案视频讲解
- 2025年河南省人民法院聘用书记员考试试题及答案
- 2025年中学教师资格考试《综合素质》核心考点与解析
- 弱电桥架安装及电缆敷设施工方案(PPT)
- 篮球双手胸前传接球说课材料
评论
0/150
提交评论