⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 baseserver.java

📁 jConfig,JAVA读取XML的开源项目
💻 JAVA
字号:
/*
 * BaseServer.java
 *
 * Created on 17. Oktober 2003, 16:29
 */
package org.jconfig.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
/**
 * This class implements a simple server. Every request to this server
 * will be handled by the defined ProtocolHandler.
 *
 * @author  Andreas Mecky andreasmecky@yahoo.de
 * @author  Terry Dye terrydye@yahoo.com
 */
public class BaseServer extends Thread {
    
    private boolean active = false;
    private ServerSocket socket;
    private ThreadPool pool;
    private Class clazz;
    private ServerContext serverContext;
   
    public BaseServer(int port,Class handler,ServerContext serverContext) {
        this.serverContext = serverContext;
        try {
            socket = new ServerSocket(port);
            pool = new ThreadPool();
            active = true;
            //setDaemon(true);
            //start();
            clazz = handler;
        }
        catch (IOException ie) {
            ie.printStackTrace();
        }
    }
    
    public void run() {
        while (active) {
            try {
                Socket clientSocket = socket.accept();
                clientSocket.setTcpNoDelay(true);
                handleConnection(clientSocket);                
            } catch (IOException ie) {
                ie.printStackTrace();
            }
        }
    }
    
    private void handleConnection(Socket clientSocket) throws IOException {
        // 1. get worker thread from pool
        WorkerThread wt = pool.getWorker();
        // 2. call the execute
        try {        	
            ProtocolHandler handler = (ProtocolHandler)clazz.newInstance();
            wt.execute(clientSocket,handler,serverContext);
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        // 3. return to pool
        pool.releaseWorkerThread(wt);
    }
    
    public void shutdown() {
        active = false;
    }
    
    public void setAsDaemon(boolean isDaemon) {
        super.setDaemon(isDaemon);
    }
    
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -