(计算机专业)im系统的设计与实现(毕业论文)内容摘要:

PI 两部分。 ( 1) 硬件部分:内存包括 128K 供 MIDP 组件使用; 32KB 内存供虚拟机运行使用; 8KB内存为提供数据持续存储使用。 ( 2) API部分: 用户界面的支持,提供类程序包,这个包定义了用户借口,事件的处理机制以及对绘图功能的支持。 由于每一种手机的显示装置和输入装置差异性很大,因此不能沿用传统的 AWT和 SWING 来 进行 UI界面的设计。 网络的支持,提供了必须的通讯协议包,包括 HTTP, COMM,SOCKET 等常用的通信协议。 数据持续存储的支持 ,提供了简单有效的机制来永久储存数据的包,它就是 RMS,它相当于一个小型的数据库,可想而知它的意义和用途有多大。 游戏功能的支持 ,最重要的是提供了快速开发游戏的 API,为开发游戏大大缩减了周期,这也是 JAVA 开发手机游戏的热门之处。 MIDP 在功能和设计方面大大不如 ,它支持的功能比较少 ( 1) 显示工具箱。 ( 2) 用户输入方法。 ( 3) 持久性数据存储(使用简单的面向记录 的数据库模型)。 ( 4) 基于 HTTP 的网络。 JSR37 中定义了 MIDP 标准。 MIDP 于 2020 年 11 月正式发布, MIDP 的推出在一定意义上增强了 Java ME 7 的功能,主要体现在如下几个方面。 ( 1) Media 音频子系统填补了 MIDP 不支持声音播放的空白。 ( 2)联网能力增强,可以支持 TCP/IP 甚至是 UDP 层的通信。 ( 3) 加强对游戏的支持,缩短游戏的开发周期。 ( 4) Media 音频子系统填补了 以前 不支持声音播放的 功能 JSR118 中定义了 MIDP 标准。 MIDP 是近期出来的,由于 出来 不久 ,具体有哪些拓展也不是很清楚,本人可以列举一个比较突出的更新,那就是 UI 界面的相关组件得到了很好的完善 ,支持多级菜单(高级 API绘图工具) ,在开发手机应用软件更加便捷,所以开发诸如手机 ,这样的软件更是如虎添翼。 JPOLISH 的简介 j2mepolish 是德国的一个 开源框架 , 它的出现可以说给 J2ME 开发带来了福音 ,它的强大之处体现在 高移植,高效率,高级的 UI界面 和预处理等几个强大的功能上。 JPOLISH 的 特色 经过使用及介绍, j2mepolish 具有以下特色。 预处理( Preprocessing) j2mepolish 的 预处理指令( Preprocessing Directives)。 例如代码。 //if {test} (is test!)。 //else (is not test!)。 //endif „„ 在 编译工具 中执行 ant emulator” 时,运行到这段代码的时候就会输出 is test !,因为这里 {test}的值为 true。 直接执行 ant, {test}值为 false,则会输出 is not test !(这是因为在 配置文件 中, 节点 target 为 emulator时,把 test 设为 true, 所以检测到这的时候,会进行相应的处理 ) 这样的好处在于可以降低模 块的耦合。 用这种预处理的方式 , 好处在于它可以兼容各个手机开发商的 API,例如 手机支持MMAPI,我们则播放一段 music( 对本地或者网络不受影响 ) 8 //if Player player = (url)。 ()。 ()。 //endif 如果手机不支持 MMAPI,则这段不会被包含到 jar 中,至于 j2mepolish 如何知道你的手机是否支持 MMAPI, 你也许会问这种区别会是怎么检测出来的,答案很简单,它根据手机的型号,并结合自身的参数来进行必要的选择,所以你不必担心,因此而带来的差异性。 也正是由于这种性质,在所有的编译通过以后它会产生不同的 JAR 包,适用于不同的手机,这样就大大缩减了手机开发的周期。 j2mepolish 的预处理所带来的便利 远不只这些的,还有对于 UI 设计的支持,调试输出等; 手机数据库( Device Database) j2mepolish 包含了 所有当前流行的手机型号它把这些信息全部存储在一个 XML 文件里面 , 在生成 JAR 包时它会根据当前手机型号与数据库匹配 , 所以它的作用非常重要。 例如在 ,里面包括 很多手机的参数 , 能否 支持文件操作,是否支持媒体访问等等。 所以 在这样一个强大的功能下 , j2mepolish 就可以做到那种一份代码兼容多个机型的功能。 高级 UI j2mepolish 带有一套很完备的高级 UI, 在 设计 UI 界面时你甚至可以直接拖拽 , 唯一的区别是它的样式完全是用 CSS 来控制 , j2mepolish 的 UI 别出一格地使用了 CSS 来控制外观,可以像设计网页那样来设计 , 但必须注意它与常规的 CSS是有一定的区别的, 例如 .myStringItem { texteffect: shadow。 textshadowcolor: black。 /* = default */ layout: horizontalcenter | horizontalexpand。 font { face: proportional。 size: large。 style: bold。 color: eef1e5。 } background { type: simple。 9 color: ffffffff。 } } 应 用 j2mepolish 的预处理 (Preprocessing)来运用这个样式。 //style StringItem StringItem myString = new StringItem(null,J2ME Polish)。 效 果。 码中使用了 “//style” 来引用 css 中的 “ StringItem” 样式,这样的好处是代码中不用出现关于 UI 的设计语句,保持了代码的整洁,同时开发人员可以把精力注重在逻辑设计上,另外,更换 UI 主题也就是更换 css,十分方便。 资源文件 按照以往的经验,如果在源文件中出现了中文,我们就需要转换成 unicode再 hardcode到源文件中,或者使用 native2ascii 来转换, j2mepolish 使用了类似 struts 的方式,可以将中文放在一个文件内,然后在源文件中直接引用。 其它 j2mepolish 提供了一个 html browser,尽管对 html tag 的支持不多,但可以自行继承来扩展支持更多的 tag,j2mepolish 还提供了 RSS browser,感觉上还不错;另外,j2mepolish 还对 RMS的操作进行了封装,省去了转换上的麻烦,使开发便利不少。 [17] SOCKET 传送机制 SOCKET 的 形象描述 在 JAVA 中基于 TCP 协议实现网络通信的协议有两个,在客户端的 Socket 类和在服务器端的 ServerSocket 类,它的功能就是建造一个服务,并通过监听随时了解客户端的连接请求 Accept()。 当需要建立网络的连接时候,必须有一台机器 运行一个程序,随时等候连接而另一端的程序则 发出连接请求,这一点同电话系统类似 于 必须有一方拨打电话,而另一方必须等候电话的连通。 具体建立连接的过程如下 : ( 1) 先在服务器上建立一个 ServerSocket 的服务器,用来随时监听客户端发出的连接请求。 ( 2) 当客户端需要连接时候,相应的必须要有一个 Socket 的实力对象,并发出连接请求,其中 HOST 函数指明该主机的 IP 地址 ,Port 则是另一个参数端口号。 ( 3) 服务器通过相应的接受函数,接受到客服端的请求后便会通过接口建立一个通信 10 的通道,具体的就是生成一个相应的输入输出流的数据流这样就可以进行 CS 模式的通信了。 ( 4) 值得注意的是服务器和客户端的通信就是建立在输入输出流上面的所以当终止同心的时候必须要观点相应的 接口。 打电话的时候,呼叫方必须事先通知所需拨打的号码,而程序建立网络连接时也同样需要知道地址和主机名称。 另外,网 络连接还需要一个端口号,连接到正常的主机之后,需要对连接确认特定的口令。 某些情况下,还需要使用一个扩展号码与网络系统连接,所以相应的要有一个端口用于连接计费程序。 所以连接的地址和端口都不能随便的进行定义应该仔细的参照标准后进行归纳。 在 Inter 上有很多 类似于 这样的 服务器 ,这些主机一般运行了多个服务软件,同时提供几种服务。 每种服务都打开一个 Socket,并绑定到一个端口上,不同的端口对应于不同的服务。 Socket 正如其英文原意那样, 像 一个多孔插座。 一台主机犹如布满各种插座的房间,每个插座有一个编号,有 的插座提供 220 伏交流电, 有的提供 110 伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。 开发一个 SC 模型的 基本原理 服务器,使用 ServerSocket 监听指定的端口, 端口号是由 16 位整数组成,即 0 到65535 之间。 实际应用中,前 1024 个端口号已经预先定义了一些特殊的服务,因此一般不能使用,除非想同这些服务器进行连接。 在两 个程序连接之前,彼此之间必须达成一致,即由客户端负责初始化连接,而服务器端随时等候请求。 只有客户端和服务器端指定 端口号一致时候才能建立连 接。 如果系统中两个程序所用到的端口号没有保持一致的话连接是不会成功的。 Socket 具体的连接流程图 如下。 图 Socket 连接 流程 11 每个 Server 端都拥有一个端口号,一台机器上如果运行多个服务,则可能对应多个端口号。 通信结束后,两端分别关闭对应的 Socket 接口,而不影响其他的端口。 所以只要注意这点建立一个简单的连接例子是不成问题的。 一个 Socket意味着为一个 Socket 数据结构 创造 存储空间。 Socket 执 行体为你管理描述符表。 两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。 Socket 数据结构中包含这五种信息。 Socket 在测量软件中的使用也很广泛。 具体应用 使用 Socket 传输 简要 流程图 (如图 ) 图 传输 流程 „„ public Connection(MenuMidlet MIdlet) { MyMIDlet = MIdlet。 url = url4 = } 以上是 Socket 的连接字串指向连接的目标地址。 public boolean initNet(String inputStr) { 12 try { // 打开两个连接 (一个上一个下 ),并使它们联结 oneConn = (StreamConnection) (url)。 oneOutputStream = ()。 oneInputStream = ()。 SendOneData(inputStr)。 // 通知服务端这是第一个连接 (this is send 99 OK)。 = (getOneData())。 twoConn = (StreamConnection) (url)。 twoOutputStream = ()。 twoInputStream = ()。 SendTwoData(98 + )。 // 通知服务器这是该手机的第二。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。