虽然现在已是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配置文件:

EchoServer v 1.241230.0.0.0org.springside.EchoCommandHandler

唯一需要的Hanlder类:

publicclassEchoCommandHandlerimplementsClientCommandHandler {publicvoidhandleCommand(ClientHandler handler, String command)throwsSocketTimeoutException, 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配置地狱。

quickserver java_QuickServer--在吵闹的环境里快速搭建自己的TcpServer(Pragmatic系列) - java - CSDN技术中心...相关推荐

  1. Docker 环境的快速搭建

    linux下安装 Docker 配置阿里云docker 源并安装 wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/ ...

  2. Spring Boot如何在最短时间里快速搭建微服务框架,详细教程贡上

    前言: Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包,并 ...

  3. esp8266 rtos 开发环境 ubuntu_Ubuntu快速搭建C++开发环境(VS Code编辑器)

    以下安装的是g++-8(目前最新)和Visual Studio Code,此方法适用于Ubuntu 14.04 64位.Ubuntu 16.04 32位/64位.Ubuntu 18.04,Ubuntu ...

  4. Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...

    一 Ansible自动化运维工具 Python 在运维工作中的经典应用ansible(批量管理操作)1.安装ansible(需要bese epel 2种源) wget -O /etc/yum.repo ...

  5. 服务器运行环境怎么搭建,服务器运行环境怎么快速搭建?

    图/文:迷神 这个主要分2类,window系统还是linux系统,另外就是什么编程语言的运行环境,每个基本上还不同的. 以常用的编程语言php为例: window系统推荐:phpStudy v8.0 ...

  6. 如何在Windows环境下快速搭建Web服务器并发布网页

    1. 环境说明 本案例基于Windows Server 2012环境进行搭建,其他Windows系统可参考配置. 2. 配置实现 1)开启 Windows 下程序和功能,如下图所示(红框中所有功能): ...

  7. docker-compose HBase + Phoenix 开发环境单机快速部署

    下载地址 https://gitee.com/assad/docker-hbase.git 项目介绍 基于 big-data-europe 的仓库代码修改,主要升级了 HBase 版本到 2.X, 增 ...

  8. 部署可道云_可道云-快速搭建个人用云网盘

    可道云是一个国人写得个人网盘.他可以让你在php环境下快速搭建一个网盘,简单快捷. 严重事项: 但是请注意,建好了网盘要新建你的管理员账号以及密码,删除默认的admin账户以及demo和guest账户 ...

  9. 微软视频直播服务器,使用微软云媒体服务快速搭建视频直播

    原标题:使用微软云媒体服务快速搭建视频直播 2020庚子鼠年假期结束,众多企业开始进入开工模式,但"战疫" 仍在进行中,大家仍以居家办公.避免外出及商务会面为主.在大量传统线下交流 ...

最新文章

  1. tensorflow with求导_3.4tensorflow2.x自动求导原理函数详解
  2. python如何收集数据_用Python做数据清洗:采集几百个xls或csv中的数据并汇总
  3. ubuntu-基本命令篇-12-磁盘管理
  4. CentOS6.3 下启动Oracle service和listener
  5. POJ-2584 T-Shirt Gumbo 最大流
  6. php代码返回404,php--------返回404状态
  7. Leetcode 188.买卖股票的最佳时机IV
  8. jQuery 源码解析(三十一) 动画模块 便捷动画详解
  9. 从零开始学前端:对象序列化与反序列化、冒泡排序、数组去重 --- 今天你学习了吗?(JS:Day11)
  10. plugin.super mysql_使用MySQ Clone Plugin部署MySQL Group Replication
  11. 【ArcGIS|空间分析】地理编码
  12. 小米路由器安装Linux软件,小米路由器mini安装mixbox教程
  13. shell学习资料:shell十三问
  14. win xp系统安装在虚拟机里面无法连接网络,无本地连接问题解决
  15. app图标圆角角度_?APP图标造型分析!
  16. 爱心的数学函数方程_笛卡尔的爱心函数
  17. iPhone开发逻辑分辨率
  18. 真实!数据分析师到底是做什么的?
  19. Centos下增加swap空间
  20. leetcode剑指offe刷题-第一题-用两个栈实现队列

热门文章

  1. ABP框架 配置权限、本地语言文件、左侧菜单项
  2. USACO 3.2.6 Sweet Butter 香甜的黄油(最短路)
  3. 字符串,列表,元组,字典基本函数
  4. r语言之散点图类型type参数
  5. java笔记:熟练掌握线程技术---基础篇之解决资源共享的问题(中)--前篇
  6. chrome浏览器下audio自动播放的hack
  7. 软件推荐:Microsoft To-Do
  8. 0523- 人员定位系统问题随手记
  9. CentOS4.4下邮件服务器架设笔记之windows AD整合功能实现
  10. 『科学计算_理论』矩阵求导