quickserver java_QuickServer--在吵闹的环境里快速搭建自己的TcpServer(Pragmatic系列) - java - CSDN技术中心...
虽然现在已是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技术中心...相关推荐
- Docker 环境的快速搭建
linux下安装 Docker 配置阿里云docker 源并安装 wget -O /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/ ...
- Spring Boot如何在最短时间里快速搭建微服务框架,详细教程贡上
前言: Spring Boot是为了简化Spring应用的创建.运行.调试.部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置. 简单来说,它提供了一堆依赖打包,并 ...
- 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 ...
- Linux 运维工作中的经典应用ansible(批量管理)Docker容器技术(环境的快速搭建)...
一 Ansible自动化运维工具 Python 在运维工作中的经典应用ansible(批量管理操作)1.安装ansible(需要bese epel 2种源) wget -O /etc/yum.repo ...
- 服务器运行环境怎么搭建,服务器运行环境怎么快速搭建?
图/文:迷神 这个主要分2类,window系统还是linux系统,另外就是什么编程语言的运行环境,每个基本上还不同的. 以常用的编程语言php为例: window系统推荐:phpStudy v8.0 ...
- 如何在Windows环境下快速搭建Web服务器并发布网页
1. 环境说明 本案例基于Windows Server 2012环境进行搭建,其他Windows系统可参考配置. 2. 配置实现 1)开启 Windows 下程序和功能,如下图所示(红框中所有功能): ...
- docker-compose HBase + Phoenix 开发环境单机快速部署
下载地址 https://gitee.com/assad/docker-hbase.git 项目介绍 基于 big-data-europe 的仓库代码修改,主要升级了 HBase 版本到 2.X, 增 ...
- 部署可道云_可道云-快速搭建个人用云网盘
可道云是一个国人写得个人网盘.他可以让你在php环境下快速搭建一个网盘,简单快捷. 严重事项: 但是请注意,建好了网盘要新建你的管理员账号以及密码,删除默认的admin账户以及demo和guest账户 ...
- 微软视频直播服务器,使用微软云媒体服务快速搭建视频直播
原标题:使用微软云媒体服务快速搭建视频直播 2020庚子鼠年假期结束,众多企业开始进入开工模式,但"战疫" 仍在进行中,大家仍以居家办公.避免外出及商务会面为主.在大量传统线下交流 ...
最新文章
- tensorflow with求导_3.4tensorflow2.x自动求导原理函数详解
- python如何收集数据_用Python做数据清洗:采集几百个xls或csv中的数据并汇总
- ubuntu-基本命令篇-12-磁盘管理
- CentOS6.3 下启动Oracle service和listener
- POJ-2584 T-Shirt Gumbo 最大流
- php代码返回404,php--------返回404状态
- Leetcode 188.买卖股票的最佳时机IV
- jQuery 源码解析(三十一) 动画模块 便捷动画详解
- 从零开始学前端:对象序列化与反序列化、冒泡排序、数组去重 --- 今天你学习了吗?(JS:Day11)
- plugin.super mysql_使用MySQ Clone Plugin部署MySQL Group Replication
- 【ArcGIS|空间分析】地理编码
- 小米路由器安装Linux软件,小米路由器mini安装mixbox教程
- shell学习资料:shell十三问
- win xp系统安装在虚拟机里面无法连接网络,无本地连接问题解决
- app图标圆角角度_?APP图标造型分析!
- 爱心的数学函数方程_笛卡尔的爱心函数
- iPhone开发逻辑分辨率
- 真实!数据分析师到底是做什么的?
- Centos下增加swap空间
- leetcode剑指offe刷题-第一题-用两个栈实现队列