QuickServer--在吵闹的环境里快速搭建自己的TcpS…

2008-02-23 09:14:34来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

作者:江南白衣

虽然现在已是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的Quick Start,编写hanlder类和XML配置文件后,用Java -jar QuickServer.jar -load EchoServer.xml 启动就可以了。

XML配置文件:

<quickserver>
<name>EchoServer v 1.2</name>
<port>4123</port>
<bind-address>0.0.0.0</bind-address>

<!-- business logic classes -->
<client-command-handler>
org.springside.EchoCommandHandler
</client-command-handler>
</quickserver>

唯一需要的Hanlder类:

public class EchoCommandHandler implements ClientCommandHandler {
public void handleCommand(ClientHandler handler, String command) throws SocketTimeoutException, IOException {
if(command.toLowerCase().equals("quit")) {
handler.sendClientMsg(
"Bye ;-)");
handler.closeConnection();
}
else {
handler.sendClientMsg(
"Echo : " command);
}
}
}

代码里只有handleCommand(ClientHandler handler, String command)这个回调函数是必须的方法,参数String command 是从客户端传来的字串,你可以定义自己的指令协议,也有byte[]和Java Object的形式。参数clientHandler 可以对client作任何事情,比如sendClientMsg()发送String形式的回应,当然还可以发送byte[]和Java Object。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Apress新书迎接JDK 6.0(1)--总述及XML的新标准

下一篇:Hibernate 深入研究之 Criteria