1.简介
Socket利用第三方框架QuickServe扩展实现Socket通讯工具。
QuickServer是一个免费的开源Java库,用于快速创建健壮的多线程、多客户端TCP服务器应用程序。使用QuickServer,用户可以只集中处理应用程序的逻辑/协议,从而方便的建立功能强大的服务器应用。该程序由Akshathkumar Shetty设计和实现。、
QuickServer基本构件有4个,分别是:
ClientCommandHandler[必选的]:处理跟客户端的交互(字符串方式)
ClientObjectHandler[可选的]:处理客户端的交互(对象方式)
Authenticator[可选的]:客户认证
ClientData[可选的]:承载客户端数据
与QuickServer模块相连接的四个组件中只有ClientCommandHandler是必须的。 QuickServerConfig对象由initService()方法构建。它实现了QuickServer,在读取XML配置后,QuickServerConfig用于QuickServer配置。 ClientHandler线程对象用于客户端缓冲池。可选的ClientData类与ClientHandler类关联,ClientHandler对 象容器参考ClientCommandHandler,ClientObjectHandler(可选),Authenticator(可选)对象包含在QuickServer主函数中。 注意:上图中并未显示QSAdminServer,它是图中QuickServer的组成部分。
2.数据模式和数据类型
直到现在我们的通信还是仅仅在使用以
数据模式用于定义QuickServer和客户Socket之间的数据交换格式。下面是目前支持的三种模式:
DataMode.STRING - 这是默认的交换模式,在这种模式下你可以接收字符串数据(以
DataMode.OBJECT - 在这种模式里你可以接收可序列化的Java对象。这种模式仅仅使用在客户端可以写java的情况下。
DataMode.BYTE - 在这种模式下你可以接收客户端发送的所有字节,包括
DataType.IN - 指定数据为输入QuickServer的数据。
DataType.OUT - 指定数据为从QuickServer输出的数据。
任何数据类型的数据模式都可以使用ClientHandler的setDataMode()方法设置,格式如下 setDataMode(DataMode dataMode, DataType dataType) 注意: 当模式为DataMode.OBJECT类型为DataType.IN,调用将会阻塞,直到客户端的ObjectOutputStream被写和头被刷新。
3. 主要特点 o 创建多线程、多客户端TCP服务器应用程序 o 支持安全服务的创建:SSL, TLS o 清楚的分离服务、协议、验证逻辑 o GUI图形界面远程管理支持 o Command Shell对服务器的本地管理 o 无须断开客户端连接的重启或延迟服务 o 为线程的再利用和大多数的使用对象建立缓冲池 o 完全的日志支持(Java构建) o 支持发送和接收字符串、字节、二进制、序列化Java对象 o 在同样的xml中支持能够存贮指定应用数据的XML配置 o 支持通过IP地址限制服务 o 支持基于XML的JDBC映射 o 支持服务配置模式 o 支持从xml加载/重新加载用于jar包 o 在QuickServer中添加处理hooks o 指定允许的最大客户端连接数 o 在通常的TCP连接上支持谈判安全连接 o 支持鉴别和查询客户端 o 附带典型例子——FTPServer, CmdServer,EchoWebServer, ChatServer4. 1.4版的新功能 o 为QuickServer添加安全模式:SSL, TLS o 添加SecureManagerLoader管理安全模式 o 在通常的TCP连接上添加谈判安全连接 o 添加初始化服务hooks o 为通信添加二进制模式 o 为QsAdminServer通信添加QSAdminAPI o 为QuickServer 添加findAllClientByKey o 添加ConnectionLostException类 o 改进ClientHandler、安全配置 o 新例子——XmlAdder:一个简单的xml服务,可添加两个整数 o 新例子——PipeServer:一个简单的重定向服务
5.使用
要配置QuickServer首先要写配置文件,然后告诉QuickServer加载这个配置。下面是一个非常简单的配置文件
现在有两种方式启动服务器
使用QuickServer启动参数--load 在这里你要做的是在启动QuickServer时使用"-load"指定xml配置文件的路径。例如
java -jar QuickServer.jar -load myxmlconfig.xml 或
java org.quickserver.net.server.QuickServer -load myxmlconfig.xml 或
quickserver.bat -load myxmlconfig.xml
使用QuickServer的initService()方法 有时你可能需要在启动你的应用时使用自己的jar文件或类文件,或者你可能想要在启动前添加一些代码,那么这个选择是最合适的。