开源java库QuickServer程序应用

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

环境:win7、myeclipse6.5、

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

程序如下,新建一web工程

结构图如上所示。

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

CoreServlet.java

package com.server;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import org.quickserver.net.AppException;
import org.quickserver.util.xmlreader.QuickServerConfig;
public class CoreServlet extends HttpServlet {

    public SyncServer syncServer;
    /**
     * Constructor of the object.
     */
    public CoreServlet() {
        super();
    }

    /**
     * Destruction of the servlet. <br>
     */
    public void destroy() {
        System.out.println("[HTTP Shutting down]");
        super.destroy(); 
    }

    /**
     * Initialization of the servlet. <br>
     *
     * @throws ServletException if an error occurs
     */
    public void init() throws ServletException {
        System.out.println("[system init started]");
        QuickServerConfig cfg = new QuickServerConfig();
        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 = new SyncServer(cfg);
        try {
            syncServer.start();
        } catch (AppException e) {
            e.printStackTrace();
        }
    }

}

在web.xml中配置servlet

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

  <servlet>
    <servlet-name>CoreServlet</servlet-name>
    <servlet-class>com.server.CoreServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>CoreServlet</servlet-name>
    <url-pattern>/servlet/CoreServlet</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

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

package com.server;
import org.quickserver.net.AppException;
import org.quickserver.net.server.QuickServer;
import org.quickserver.util.xmlreader.QuickServerConfig;
public class SyncServer {

    private QuickServer secureServer;
    //quickserver配置
    private QuickServerConfig serverConfig;
    
    public SyncServer(QuickServerConfig serverConfig){
        this.serverConfig = serverConfig;
    }
    
    public void start() throws AppException{
        secureServer = new QuickServer();
        secureServer.initServer(serverConfig);
        secureServer.startServer();
    }
    
    public void stop() throws AppException{
        if (secureServer != null)
            secureServer.stopServer();
    }
}

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

package com.server;

import java.io.IOException;
import java.net.SocketTimeoutException;

import org.apache.log4j.Logger;
import org.quickserver.net.server.ClientCommandHandler;
import org.quickserver.net.server.ClientEventHandler;
import org.quickserver.net.server.ClientHandler;


public class SyncCommandHandler implements ClientEventHandler,ClientCommandHandler {

    public void closingConnection(ClientHandler arg0) throws IOException {
        System.out.println("[closingConnection]" + arg0.getSocket().getInetAddress());
    }

    public void gotConnected(ClientHandler arg0) throws SocketTimeoutException,IOException {
        System.out.println("[gotConnected]" + arg0.getSocket().getInetAddress());
    }

    public void lostConnection(ClientHandler arg0) throws IOException {
        System.out.println("[gotConnected]" + arg0.getSocket().getInetAddress());
    }

    public void handleCommand(ClientHandler arg0, String arg1)throws SocketTimeoutException, IOException {
        //处理事件
        System.out.println("Request Content: " + arg1);
        //对接收到的数据arg1进行处理
        //......
    }

}

在上述代码中,注释的地方arg1就是接受到的请求内容。可以对它进行处理。
一个socket服务端就这么简单做好了。

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

 

posted on 2013-08-08 16:36  划根火柴点根烟 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/muyu-jinyu/p/3246125.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值