`
jinji713
  • 浏览: 42117 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

QuickServer--在吵闹的环境里快速搭建自己的TcpServer(Pragmatic系列) 作者:江南白衣

阅读更多
QuickServer--在吵闹的环境里快速搭建自己的TcpServer(Pragmatic系列) 作者:江南白衣 
    虽然现在已是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。

    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配置地狱。

分享到:
评论

相关推荐

    java -> QuickServer 新建 TCP 服务器端

    在Java编程环境中,创建一个TCP服务器端是网络通信的基础任务之一。QuickServer是一个流行的开源Java框架,它简化了构建高性能、可扩展的TCP服务器的过程。本文将深入探讨如何使用QuickServer来建立一个简单的TCP...

    QuickServer - TCP server framework-开源

    QuickServer是一个开源Java库/框架,用于快速创建健壮的多线程,多客户端TCP服务器应用程序。 借助QuickServer,您可以只专注于手头的应用程序逻辑/协议。

    QuickServer

    QuickServer是一个专为Java开发者设计的免费开源库,它提供了构建高效、稳定且多线程的TCP服务器应用...通过学习和掌握QuickServer,Java开发者可以快速搭建出可靠的网络服务,并在高并发环境下保持良好的性能表现。

    java多商户分销系统源码-QuickServer-Main:QuickServer是一个开源Java库/框架,用于快速创建强大的多客户端TC

    java多商户配送系统源码QuickServer v 2.1.0 自述文件 阅读“install.txt”文件以获取在解压或安装 QuickServer 后设置环境变量的说明。 介绍 QuickServer 是一个开源 Java 库/框架,用于快速创建强大的多客户端 TCP...

    java quickserver,quickserver,java socket

    Java QuickServer是一款基于Java的高性能、可扩展的网络服务器框架,设计用于快速开发TCP和UDP应用。它提供了灵活的配置选项,使得开发者可以方便地构建和管理网络服务。QuickServer的核心是基于Java Socket API构建...

    Quick Server 入门教程

    **QuickServer**是一款免费且开源的Java库,主要用于帮助开发者快速构建高效稳定的多线程、多客户端TCP服务器应用程序。借助QuickServer,开发者可以更加专注于业务逻辑和协议的设计与实现,而无需过多关注底层的...

    QuickServer 1.3 User guide & code

    QuickServer 1.3 是一个针对开发者设计的轻量级服务器框架,它支持TCP和UDP两种网络协议,为快速构建网络服务提供了便利。这个软件包包括一份《开发者指南.pdf》以及对应的源代码,旨在帮助开发者深入理解和使用...

    QUickServer假设文档

    QuickServer 是一个强大的开源 Java 库,专门设计用于快速构建高效、稳定的多线程、多客户端TCP服务器应用程序。它的核心优势在于简化了复杂的Socket编程,让开发者能够专注于应用程序的业务逻辑和协议处理,而非...

    QuickServer开发指南

    QuickServer 是一个免费的开源 Java 库,用于快速创建健壮的多线程、多客户端 TCP 服务器应用程序。使用 QuickServer,用户可以只集中处理应用程序的逻辑/协议,从而方便的建立功能强大的服务器应用。该程序由 ...

    socket框架 quickServer

    综上所述,QuickServer是一款功能强大、易于使用的Java库,特别适合于需要快速搭建多线程、多客户端TCP服务器应用程序的开发者。通过其丰富的特性和良好的文档支持,QuickServer能够极大地提高开发效率并降低维护...

    QuickServer1.4.7.exe

    java开源通讯包,QuickServer1.4.7.exe

    QuickServer.jar

    QuickServer.jar 网络相关

    quick server

    "Quick Server"是一款轻量级的服务器软件,主要用于快速搭建和管理网络服务。这款服务器程序设计简洁、高效,适合小型到中型应用的部署。它提供了丰富的API接口和配置选项,便于开发者进行定制化开发,以满足不同...

    taptank_html5:点击坦克游戏、HTML5、QuickServer

    "QuickServer"可能是指用于此游戏的服务器端解决方案,可能是为了处理用户交互、数据存储和游戏逻辑。 【描述解析】 描述中的 "点击坦克游戏" 暗示这是一款用户通过点击操作来控制坦克的游戏,可能包含射击、躲避等...

Global site tag (gtag.js) - Google Analytics