此信息同时发布在www.humanmonth.cn
上,源码下载地址:下载地址
。
HIM
是一个由
Flex+Java
实现,基于
Socket
连接的在线聊天程序。下图为服务端结构图。
<!----><!---->
<!---->
服务端工作的流程:服务端启动
Server
后,
Server
将监听端口,等待用户登录。当
Server
接收到用户登录时,会新建一个继承自
Thread
的
Processor
对像,
Processor
对像内会创建
User
、
Protocol
等对像。
User
保存用户的信息,包括
IP
、
Port
、
Name
等,而
Protocol
为协议处理类,他把
Processor
接收到的流转化为字符串并组装成方便
Action
调用的
RequestData
对像。
Processor
接收到请求,并包装成
RequestData
对像后,将在
ActionRegister
中查找可以处理该
RequestData
对像的
Action
类,然后把
RequestData
对像传给
Action
对像处理。
服务端特点:端口由
Server
类监听,因为应用层没有走
Http
协议,所以不依赖于
Web
容器。另外前后端是用
XML
传输的,所以对前台的
Flex
也没有依赖。
扩展:需要扩展功能时可以通过实现
Action
接口便可(右上角的黑色方框中的类为功能类),其它的容器类一般不用改。
与
Servlet
容器比较:为了避免误解,首先说明的是
HIM
的服务端充其量只是一个简单的多线程容器,代码只有几百行,当然不能和
Servlet
容器相比。
HIM
服务端只是模仿了
Servlet
容器一小部份功能实现的实现模式而已。
HIM
中的
Server
负责监听端口,
Processor
和
Protocol
负责把
Socket
中的流按协议转化为请求对像
RequestData
(类似
Servlet
中的
Request
对像)。而图中右上角的
Action
接口就类似于
Servlet
接口,我们可以通过实现
Action
接口来扩充功能。而
ActionRegister
类就类似
Web.xml
文件,负责装配
Action
。
测试用例:比较遗憾的是整个项目没有任何测试用例。并不是说本人没有写测试用例的习惯,而是整个服务端启动所需要的时间大概一秒左右。出问题了,直接用
log
调试便可。像就页面的
js
调试一样快,为
js
写测试用例,好像是吃力不讨好的工作。
补充说明:其实这里图画得复杂,代码也实现得复杂。如果按照
sample
and dirty
的风格来实现,一百行代码左右就可以实现功能。但为了方便以后扩展和代码重用,把代码按功能点分开多个层来实现。另一方面,由于不是商业项目,实现上不太严格,异常有处理,但比粗糙。而同步方面,有几处没有处理,但影响不严重。由于某些原因,代码是基于
jdk1.4
的,以后升级到
jdk5.0
后再处理。有兴趣的可以下载源码看看,下面为
HIM_v0.1.3的demo
:
分享到:
相关推荐
"HIM MOD"是专门为《我的世界》设计的一款模组,它引入了一个名为HIM的角色,为游戏增添了新的剧情和挑战。HIM,全称Herobrine in Minecraft,是一个在《我的世界》社区中流传已久的都市传说角色,其存在激发了玩家...
在这个实例中,我们关注的是"维纶HIM与连鸿多台温控通讯实例",它涉及到维纶(Weinview)的人机界面(HIM)与连鸿(Lianhong)的多台温控器之间的MODBUS RTU 485通讯。下面将详细讲解这个通讯过程中的核心知识点。 ...
该软件程序是连接人机界面和PLC的 可以通过人机界面直接来控制PLC里面的各个动作
HIM服务器登录器
在本文中,我们将深入探讨基于STM32F429微控制器的HIM串口屏应用,特别是关于"HIM_UART5"项目。这个项目包含了HIM上位机端的代码和STM32微控制器端的代码,两者都经过了实际测试,确保了稳定性和可靠性。我们将围绕...
例句:Jim is such a smart boy that everyone likes him. 这种句型结构用于表示某个结果或状态特别优异或特别不好,导致某个结果或状态。“Such”是句型结构的关键词,表示特别的意思,后面可以加上that,表示某个...
空气质量的界面
根据提供的文件信息,我们可以归纳出一系列与"HIM指令大全档"相关的知识点,这些知识点主要涉及游戏内的各种命令、操作及功能。以下是对标题、描述、标签以及部分内容中的关键信息进行详细解析: ### HIM指令大全档...
AOC冠捷LV232HIM液晶显示器驱动(2013年12月27日发布)该驱动为AOC LV242WED液晶显示器驱动驱动程序。一般液晶显示器都会有即插即用的功能,用不到显示器驱动。但如果你的显示器由于其他原因出现故障无法显示,可以...
例如:"Seeing the boy crying, she went over to comfort him." 在这个句子中,“seeing the boy crying”是动名词复合结构,"seeing"是动名词,"the boy"是逻辑主语。 两者之间的区别主要在于逻辑主语的关系。在...
标题和描述中的“他就是我的太阳!我爱他”似乎是一种情感表达,而非与IT行业直接相关的主题。然而,考虑到提供的标签与文件名,我们可以推测这可能涉及到个人的情感记忆存储,或者是某个人对另一个人的独特象征,这...
独立主格结构是一种特殊的非谓语形式,在英语中被广泛使用,特别是在书面语中,它能够简洁、清晰地表达时间、原因、条件、行为方式或伴随情况等状语信息,而不需要通过完整的从句来实现。这个结构由一个名词或代词...
- 名词/主格代词 + 现在分词,表示主动或进行的动作,如 "The girl staring at him, he didn't know what to say." - 名词/主格代词 + 过去分词,表示被动或完成的动作,如 "The problems solved, the quality has ...
这类电缆通常具有特殊的结构和材料,能够抵抗海水侵蚀,同时提供必要的机械强度和电气性能。在HIM-250海缆埋设机的作业过程中,漂浮电缆可能用于连接海缆铺设船和海底电缆,以便于控制和引导电缆的沉放位置和深度。 ...
6. "He always dreams of there being a chance for him to go abroad for further study." 梦想某事发生通常用"dream of +宾语+动名词",这里的"there being"是动名词形式,表示梦想有机会。 7. "Agriculture is ...
例句:So many people to help him, he is sure to succeed. (有这么多人帮忙,他肯定能成功。) 4. 名词/代词 + 名词 名词作为逻辑主语的补充信息,说明主语的特性,例如: 例句:Many people joined in the work...
【高中英语语法精讲:独立主格结构】 独立主格结构是英语中一种特殊的非谓语动词形式,它在句子中充当状语,但其逻辑主语与句子的主语并不相同,而是独立存在的。这种结构看似独立,实则仍属于句子的一部分,通常...
- with复合结构: "Last night I followed him, sword in hand." 这里的 "sword in hand" 也是伴随状语,表示 "with a sword in my hand"。 需要注意的是,独立主格结构和with复合结构都不能包含动词的谓语形式,...