作者:
江南白衣
虽然现在已是Web Server, Web Service的天下,但偶然还是会因为性能苛刻,或者需要自定义协议的原因,很无辜的要自己做一个Multi-Thread,Multi-Client的Tcp Server。
第一时间想起了那两卷UNP(《Unix Network Programing》),好在现在除了Ice的Java版,Netty2作者的后续之作Apache MINA,Crmky的Cindy之外,还有个超简单的QuickServer,让你专心编写自己的业务代码,不用编写一行Tcp代码。
本来还想花点时间在几种框架之间好好选型的,但就在一个无聊会议的间隙里,尝试着用QuickServer编写一点代码,结果才十几行代码就把任务完成了,还选什么型呢?因此,也把QuickServer作为这个Pragmatic系列的开端。
一开始吸引我的是QuickServer的QuickStart,编写hanlder类和xml配置文件后,用java -jar QuickServer.jar -load EchoServer.xml启动就可以了。
XML配置文件:
<quickserver>
<name>EchoServerv1.2</name>
<port>4123</port>
<bind-address>0.0.0.0</bind-address>
<!--businesslogicclasses-->
<client-command-handler>
org.springside.EchoCommandHandler
</client-command-handler>
</quickserver>
唯一需要的Hanlder类:
publicclassEchoCommandHandlerimplementsClientCommandHandler{
publicvoidhandleCommand(ClientHandlerhandler,Stringcommand)throwsSocketTimeoutException,IOException{
if(command.toLowerCase().equals("quit")){
handler.sendClientMsg("Bye;-)");
handler.closeConnection();
}else{
handler.sendClientMsg("Echo:"+command);
}
}
}
代码里只有handleCommand(ClientHandlerhandler,Stringcommand)这个回调函数是必须的方法,参数String command 是从客户端传来的字串,你可以定义自己的指令协议,也有byte[]和Java Object的形式。参数clientHandler 可以对client作任何事情,比如sendClientMsg()发送String形式的回应,当然还可以发送byte[]和Java Object。
handleCommand() 将框架的理念发挥到极致,你完全不需要关心Tcp编程的底层,不需要API式的线性编程,只要实现并配置回调函数,用框架传来的command与handler干活就可以了,框架会完成前后一切的控制工作。
但这个例子太没营养了?在我的任务里,有Query:keyword, Detail:i 和 Bye三种指令,静态初始化Spring的ClasspathXmlApplicationContext,通过getBean("searchService")拿到搜索服务对象进行搜索,最后学WebService,用jdom简单的将搜索结果序列化成xml传给Delphi客户端解读。
另一个接口是EventHandler,可以对Client的gotConnected,closingConnection 等事件响应。
最后QuickServer提供了ChatServer、FTPServer等example;安全方面支持验证模式;性能方面Charlse说单机上两万人没问题....
就这么多了,毕竟一个短会间隙就完成的东西,能有多复杂呢?Pragmatic就是这样一个系列,介绍一些轻便的框架,大幅简化大家的编程,专心编写自己的业务代码,不需要知道太多的底层细节,也没有xml配置地狱。
分享到:
相关推荐
QuickServer是一个开源Java库/框架,用于快速创建健壮的多线程,多客户端TCP服务器应用程序。 借助QuickServer,您可以只专注于手头的应用程序逻辑/协议。
java多商户配送系统源码QuickServer v 2.1.0 自述文件 阅读“install.txt”文件以获取在解压或安装 QuickServer 后设置环境变量的说明。 介绍 QuickServer 是一个开源 Java 库/框架,用于快速创建强大的多客户端 TCP...
java quickserver,quickserver,java socket
NULL 博文链接:https://mft.iteye.com/blog/2297854
QuickServer开发指南,一种java 写的tcp server
QuickServer 是一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/协议。
quickserver 1.3 说明文档以及随书代码。 quickserver 是一个方便易用的TCP UDP server
QuickServer开发指南.pdf
QuickServer的类似软件 - 网络工具包 - 开源中国社区 QuickServer 是一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/协议。
QuickServer开发指南 java实战 经典例子!
java开源通讯包,QuickServer1.4.7.exe
quickServer,开发指南,英文版本
非常快速的、稳定的、支持多线程的TCP,UDP服务器搭建手册,是我用过的比jpcap和Jnetcap都要来得稳定。
QuickServer.jar 网络相关
socket 框架 quickServer开发样例,讲解多线程、服务器开发等
它特别适用于基于 tcp/ip 的服务器和网站在非常高的负载下爬行。 支持数千个连接。 QuickLB 基于 QuickServer QuickLB 简单而强大。 其简单的设计促进了快速部署、易于使用和设置。 这仍然是测试版,正在积极开发中...
taptank_html5 点击坦克游戏、HTML5、QuickServer