- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * ?表示逻辑: DaytimeClient1.java类封装了客户端的表示逻辑。该类的代码只关注从用户处获取输入(服务器地址)和向用户显示输出(时间戳)。 为获取时间戳,向helper类发起了一个方法调动。该方法隐藏了应用逻辑细节以及底层服务逻辑。结果是,DaytimeClient1.java的开发人员不必关注IPC中使用的socket类型。 ?应用逻辑: DaytimeClientHelper1.java类封装了客户端的应用逻辑。该模块使用了子类DatagramSocket,myClientDatagramSocket,执行发送请求或接收应答的IPC。注意数据包socket的使用细节被该模块隐藏。该模块不必处理携带有效载荷数据的字节数组。 ?服务逻辑: MyClientDatagramSocket.java类提供了IPC服务细节,该例中使用了数据包Socket API(抽象模型中的最底层)。。 服务器端软件 图3-15 DayTimeServer1的UML类图(未显示所有属性) DayTimeServer1的UML类图(未显示所有属性) ?表示层:通常,服务器端几乎没有表示逻辑。在本例中,用户仅需输入服务器端口,为简化起见,这里使用命令行参数处理端口输入。 ?应用逻辑层:类DaytimeServer1.java封装了服务器端的应用逻辑。该模块执行时不断循环,等待客户请求并为该客户建立服务会话。该模块通过DatagramSocket的子类myServerDatagramSocket执行接收请求和发送应答的IPC。注意,该模块隐藏了使用数据包socket的细节。具体来说,该模块不需要处理携带有效载荷数据的字节数组。 ?服务逻辑:类MyServerDatagramSocket提供IPC服务细节,本例中使用数据包Socket API。该类与类MyClientDatagramClient相似,但不同的是,这里的receiveMessage方法返回了一个DatagramMessage对象,其中不仅包含自身消息,还包括发送者地址。服务器需要使用该地址向客户发送请求。这是无连接socket的一个特有性质。除此之外,服务器无法知道该向何处发送应答消息。从接收数据报中获取发送者地址的方法是getAddress和getPort。 Daytime协议程序演示 基于无连接socket的Daytime协议的实现: DaytimeClient1.java DaytimeClientHelper1.java MyClientDatagramSocket.java DaytimeServer1.java MyServerDatagram.java 采用无连接数据包socket的daytime客户-服务器应用。 基于流式socket的Daytime协议 采用流式Socket的Daytime客户-服务器应用 客户端软件 DaytimeClient2的UML类图(未显示所有属性) 图3-16 DaytimeClient2的UML类图(未显示所有属性) ?表示逻辑:除了helper类名改成DaytimeHelper2以外,其余都与DaytimClient1相同。DaytimeClientHelper2中的getTimeStamp方法使用了流式Socket API,但具体细节对DaytimeClient2来说是透明的。 ?应用逻辑:类DaytimeClientHelper2封装了客户端的应用逻辑,这与DaytimeClientHelper1类似,但该类使用流式socket取代了数据包socket。此时客户不必通过发送一个空消息来发出请求,因为连接已经包含了返回地址。 ?服务逻辑:类MyStreamSocket提供了IPC服务细节。本例中使用了流式Socket API。类MyStreamSocket是一个包装类,其封装了类socket,并提供向socket发送和接收消息的方法。 服务器端软件 DayTimeServer2的UML类图(未显示所有属性) 图3-17 DaytimeServer2的UML类图(未显示所有属性) ?表示层:DaytimeServer2的代码与DaytimeServer1相同,仅有的用户输入是服务器端口号。为简单起见,使用命令行参数来处理输入。 ?应用逻辑层:DaytimeServer2的代码使用流式Socket API接受连接。随后使用返回的socket引用实例化一个MyStreamSocket对象,该对象的SendMessage方法被用来向连接另一端的客户传送时间戳。 ?服务逻辑:因为其中包含流式IPC所需的方法,故此处使用了与客户端相同的包装类My
您可能关注的文档
最近下载
- 2022年ECR ECN基础知识ppt课件.pptx VIP
- 2025年实验动物从业人员上岗证试题库+答案.docx
- 庄周梦蝶原文课件.pptx VIP
- 卧式储罐安装施工方案.docx VIP
- 二零二五版特种电缆定制与研发合作合同.docx
- 生长发育迟缓的诊断与干预.docx VIP
- 佳能 iC MF645Cx 645 彩色激光打印机中文维修手册.pdf VIP
- T_ZGCMITT 006.2-2022 介入诊疗服务质量评价 第2部分:介入诊疗技术规范.docx VIP
- SL 285-2020 水利水电工程进水口设计规范.pdf
- 2025年广州市花都区人民医院医护人员招聘备考试题及答案解析.docx VIP
文档评论(0)