文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程J2EE/J2MEMIDP终端模拟之一:一个简单的模拟器MIDlet
精品推荐
特别推荐
·J2EE Web开发技术期待一次新的技术变革
·J2ME程序开发初学者快速入门的九大要点
·使用技巧:J2ME中程序优化的十个小方法
·RMS从入门到精通之一
·J2EE应用程序中SQL语句的自动构造方法
·解决J2EE系统应用性能问题常用优化项目
·J2EE实用技巧:提升JSP应用程序的绝招
·J2ME内存优
·J2ME简介
·J2EE技术
热点TOP10
·FC API(JSR 75)简单讲解
·J2ME程序开发初学者快速入门的九大要点
·游戏框架之心得体会(1)
·在J2EE中APPLET和HTML作为客户端的比较
·Eclipse入门?使用指南及开发Eclipse插件
·jboss配置系列第一天
·一个2D图形绘画的案例
·类似卫星扫描效果
·扫描屏幕和颜色渐变的效果
·一个基于MIDP的迷宫游戏

MIDP终端模拟之一:一个简单的模拟器MIDlet

日期:2008年6月6日 作者: 查看:[大字体 中字体 小字体]


下载 项目源代码

        随着每一款新的 MIDP 2.0 设备在高级网络上部署,基于 TCP/IP 的套接字应用程序市场正不断得到扩展。它是对 MIDP 1.0 设备的补充,这些设备要么已经完全支持可选的套接字协议(像 Motorola/Nextel iDEN 电话),或者至少非正式地在半双工中支持它们(像 Nokia Series 60 和其他 Symbian 设备)。结果,随着有企业头脑的开发人员发现该平台不仅可以很好地用于游戏,他们对它也表现出越来越强的兴趣。

       在本文中,通过构建一个小的简单终端模拟器,我们将探讨通用连接框架(GCF)中的套接字支持。您现在可以下载项目代码了。

我们的终端模拟器将实现 telnet 协议。telnet 协议是基于文本的和面向命令的协议,它是 Internet 的架构骨干之一,并且广泛用于教育、研究和公司环境中的遗留应用程序和系统管理。在移动形式中具有该功能是一件很好的事情。

我们将首先在一个透明和 GCF 友好的包装器中实现 telnet,然后为显示终端内容而编写一个自定义的 canvas,并最终在 MIDlet 中将所有这些结合在一起。在“让它工作,然后再让它正确”的精神下,我们要使一个最基本的(或者叫“哑”)终端工作,并且这将作为稍后更为复杂终端的基础。同时,我将突出说明 MIDP 程序员在编写普通应用程序以及网络化应用程序时应该知晓的问题和约束。

Telnet:它对什么有好处?

telnet 协议是一个用于在双向网络连接上进行通信的规则集。与来回传送的普通内容相混合的是特殊的 telnet 命令 ,该命令允许连接的两端进行协商并同意将要遵守的规则。这些命令从进入数据中剥离,所以使用该接的应用程序永远无需知道它们。MIDP终端模拟之一:一个简单的模拟器MIDlet

Telnet 早于现代 Internet 而出现。J. Postel 和 J. Reynolds 于 20 多年前在 RFC 854 (值得一读)中定义了该协议。在那时,“终端”意味着一个屏幕和键盘,使用串行电缆连接到大型计算机。要使用终端,您必须与计算机处于同一座建筑中。Telnet 则允许您将终端连接到网络中,然后在 Internet 上从任何地方进行工作。

Telnet 使您能控制任何具有命令行界面的操作系统。在 UNIX 环境中,您可以获得对机器的完全控制,包括能够开始和停止处理,甚至关机和重新启动。实际上,多数 UNIX 软件都假定用户是在终端上。在 WWW 出现之前,telnet 还提供我们现在称作 Web 服务的信息和服务类型,这些 telnet 服务中的某些仍旧可用,如 Weather Underground。但是,现今 telnet 主要用于对远程计算资源的远程访问。

几乎没有人再使用老式的终端了:在桌面计算机、智能工作站以及越来越多地在移动设备上,我们运行着“假装”是终端的软件程序,称为“虚拟终端”或“终端模拟器”。这正是我们将要构建的。

实现 Telnet

首先从 InputStream 开始。有了 GCF,利用类似于 Connector.open("socket://myhost:23") 这样的代码,您可以从 Connector 处获得一个 SocketConnection。然后从所得到的 Connection 调用 openInputStream() 来获得一个 InputStream ,并开始从套接字读取数据。

要实现 telnet,我们需要观察该命令流并处理它们,将其剥离出来,使应用程序的其他部分永远看不到它们。我们将通过创建我们自己的子类 InputStream 来这样做,该子类将包装从 SocketConnection 处获得的流。我们还将创建我们自己的 OutputStream 子类,用来标记我们的应用程序所发送的看来像是 telnet 命令、但又不应被连接的远程端看作是 telnet 命令的任何数据。

换句话说,我们的应用程序将像通常那样简单地与输入和输出流对话,而在内部,我们的终端模拟器将处理握手和协商,所以应用程序无需担心这些。

我们的 telnet 模拟器必须遵循一个典型性的过程:

我们从输入读取一个字节。如果该字节是除 225 以外的任意数值,我们只需把该字节传送到应用程序并继续读取。

如果字节数值是 255,那么我们就读取下个字节,查看它是否是一条命令。在 telnet 协议中,255 作为 IAC,代表“作为命令解释”(Interpret As Command)。

如果第二个字节还是 255,那么服务器实际上是想发送数值 255,不是一条命令。在这种情况下,我们只需把该字节传送到应用程序并继续读取。实际上,发送者通过连续发送两个 255 来转义数值 255。

如果第二个字节不是 255,它就是一条命令。对于多数命令,我们只要执行命令内容并继续读取即可。

某些命令 ——如 SB(250)、WILL(251)、WONT(252)、DO(253)和 DONT(254)——是协商命令。每个命令后都跟随着第三个字节-选项,我们读取那个字节,获得选项代码。如果第二个字节是除 SB 以外的任何协商命令,我们执行命令和选项所指定的操作并继续读取。

SB 命令会触发一个子协商。在选项字节后,我们读取其他数据,直到我们遇到一个后面跟有 SE 的 IAC。我们执行选项所指定的操作,使用所提供的额外信息,并继续读取。

因为客户端无需决定它们将要实现哪些已建立的 telnet 选项,所以在客户端和服务器间必须进行协商,以确定两端支持哪些选项。

协商是简单的命令交换。一端使用 WILL 或 D0 命令打开一个协商,使用哪条命令取决于由哪一方执行指定的选项:

  • WILL 提出第一方能够和原意执行的选项。如果第一方应该开始执行那个选项,则另一方回复 D0,如果另一方无法理解或不支持该选项,则回复 DONT。
  • DO 告诉另一方开始执行选项。如果另一方开始执行选项,则回复 WILL,如果另一方无法理解或不支持该选项,则回复 WONT。

我们最小的客户端将只处理 4 条命令:WILL、WONT、DODONT,以及两个选项:TERMINAL_TYPE(24)和 NAWS(“协商窗口大小” 31)。对于所有其他选项,我们将返回 DONTWONT。(我曾考虑支持 RANDOMLY_LOSE_DATA(256)和 SUBLIMINAL_MESSAGE(257)选项,但是我们现在尽量保持其简单。)

[1] [2] [3] [4] [5] [6] [7] 下一页 




上一篇:MIDP终端模拟之二:高级终端模拟

下一篇:J2EE入门教程之四

相关文章:
·我和一个偷尝禁果的女孩的故事
·李彦宏:三分之一时间用在寻找人才
·模拟城市4秘籍
·Windows Vista Ultimate中文旗舰版下载+简单破解(支持迅雷HTTP & BT)
·人生哲理:一个人最重要的是他的内心
·DVD转换MPEG-4三部曲之一
·Photoshop十余种漂亮照片边框简单制作技巧
·如何建立一个网站?规划、设计、目的、原则、宣传
·简单方法查找黑客老巢
·IE新开窗口最大化最简单有效方法
相关软件:
·模拟城市3000(Sim City 3000)简体中文版
·NDS《逆转裁判4 完美汉化简体中文版》模拟器
·一个真实的宋美龄
·整形模拟软件_非常face V1.0
·一个人的ktv
·《铁拳5》模拟器
·模拟人生 2
·《拳皇97》加强版 风云再起 模拟器
·功能较强的一个FLASH编辑器
·枪战类街机《高级战争2金手指》模拟器

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.com All Rights Reserved. 鄂ICP备05000083号Powered by:vipcn