quickserver java_开源java库QuickServer程序应用

这篇博客通过一个实际例子展示了如何在Windows环境下利用Java开源库QuickServer创建一个简单的Socket服务端。主要步骤包括设置环境、引入所需jar包、创建Servlet启动QuickServer、配置web.xml、定义Server类以及实现ClientEventHandler和ClientCommandHandler接口。服务端能够接收并处理客户端的连接和命令。
摘要由CSDN通过智能技术生成

下面以实际的例子来说明它的简洁。

环境:win7、myeclipse6.5、

jar包:log4j-1.2.13.jar、QuickServer.jar、commons-pool-1.3.jar。

程序如下,新建一web工程

5a25d1d66850ec763a27bcf3e7f22020.png

结构图如上所示。

新建一servlet在工程启动时启动加载该类,已启动QuickServer。

CoreServlet.java

packagecom.server;importjavax.servlet.ServletException;importjavax.servlet.http.HttpServlet;importorg.quickserver.net.AppException;importorg.quickserver.util.xmlreader.QuickServerConfig;public class CoreServlet extendsHttpServlet {publicSyncServer syncServer;/*** Constructor of the object.*/

publicCoreServlet() {super();

}/*** Destruction of the servlet.
*/

public voiddestroy() {

System.out.println("[HTTP Shutting down]");super.destroy();

}/*** Initialization of the servlet.

*

*@throwsServletException if an error occurs*/

public void init() throwsServletException {

System.out.println("[system init started]");

QuickServerConfig cfg= newQuickServerConfig();

cfg.setClientEventHandler("com.server.SyncCommandHandler");

cfg.setClientCommandHandler("com.server.SyncCommandHandler");

cfg.setBindAddr("0.0.0.0");

cfg.setPort(5557);

cfg.setName("SyncServer");

cfg.getAdvancedSettings().setCharset("GBK");

syncServer= newSyncServer(cfg);try{

syncServer.start();

}catch(AppException e) {

e.printStackTrace();

}

}

}

在web.xml中配置servlet

CoreServlet

com.server.CoreServlet

1

CoreServlet

/servlet/CoreServlet

index.jsp

紧接着我们要实现以下SyncServer类,SyncServer.java

packagecom.server;importorg.quickserver.net.AppException;importorg.quickserver.net.server.QuickServer;importorg.quickserver.util.xmlreader.QuickServerConfig;public classSyncServer {privateQuickServer secureServer;//quickserver配置

privateQuickServerConfig serverConfig;publicSyncServer(QuickServerConfig serverConfig){this.serverConfig =serverConfig;

}public void start() throwsAppException{

secureServer= newQuickServer();

secureServer.initServer(serverConfig);

secureServer.startServer();

}public void stop() throwsAppException{if (secureServer != null)

secureServer.stopServer();

}

}

到这儿我们还得实现以下QuickServer的两个类,ClientEventHandler和ClientCommandHandler。很简单的程序如下SyncCommandHandler.java

packagecom.server;importjava.io.IOException;importjava.net.SocketTimeoutException;importorg.apache.log4j.Logger;importorg.quickserver.net.server.ClientCommandHandler;importorg.quickserver.net.server.ClientEventHandler;importorg.quickserver.net.server.ClientHandler;public class SyncCommandHandler implementsClientEventHandler,ClientCommandHandler {public void closingConnection(ClientHandler arg0) throwsIOException {

System.out.println("[closingConnection]" +arg0.getSocket().getInetAddress());

}public void gotConnected(ClientHandler arg0) throwsSocketTimeoutException,IOException {

System.out.println("[gotConnected]" +arg0.getSocket().getInetAddress());

}public void lostConnection(ClientHandler arg0) throwsIOException {

System.out.println("[gotConnected]" +arg0.getSocket().getInetAddress());

}public void handleCommand(ClientHandler arg0, String arg1)throwsSocketTimeoutException, IOException {//处理事件

System.out.println("Request Content: " +arg1);//对接收到的数据arg1进行处理//......

}

}

在上述代码中,注释的地方arg1就是接受到的请求内容。可以对它进行处理。

一个socket服务端就这么简单做好了。

至于工程结构中的MessageEventFactory.java类是我处理数据的类。没有必要写下来。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值