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

📄 socketserver.java

📁 java版源代码,里面包含很多源代码,大家可以看看.
💻 JAVA
字号:
package com.trulytech.mantis.socket;

import java.net.*;
import java.util.*;

import com.trulytech.mantis.system.*;

/**
 *
 * <p>Title: Mantis</p>
 *
 * <p>Description: Socket Server后台处理</p>
 *
 * <p>Copyright: Copyright (c) 2002</p>
 *
 * <p>Company: </p>
 *
 * @author Wang Xian
 * @version 1.0
 */
public class SocketServer
    extends Thread {

  //是否初始化
  public static boolean isInited = false;
  private ServerSocket server = null;
  /**
   * Socket
   */
  private ServerSocket serverSocket;
  private int maxProcessThread;
  private int socketPort;
  private ArrayList ThreadPool;

  /**
   * 构造函数
   * @param MaxProcessThread 最大线程数
   * @param SocketPort Socket端口
   * @throws Exception
   */
  public SocketServer(int MaxProcessThread, int SocketPort) throws Exception {
    //是否已经初始化
    if (isInited)
      return;
    else {
      this.maxProcessThread = MaxProcessThread;
      this.socketPort = SocketPort;
      setUpHandlers();
      this.isInited = true;
      logWriter.Info("后台Socket服务器启动成功");
    }
  }

  //运行线程
  public void run() {
    try {
      acceptConnections();
    }
    catch (InterruptedException e) {
      return;
    }

    catch (Exception e) {
      logWriter.Error(e.toString());
    }
  }

  /**
   * 初始化响应线程
   * @throws Exception
   */
  public void setUpHandlers() throws Exception {
    ThreadPool = new ArrayList();
    for (int i = 0; i < this.maxProcessThread; i++) {
      PooledConnectionHandler currentHandler = new PooledConnectionHandler(i);
      Thread ts = new Thread(currentHandler);
      ts.start();
      ThreadPool.add(ts);

    }
  }

  /**
   * 监听
   * @throws Exception
   */
  public void acceptConnections() throws Exception {

    server = new ServerSocket(this.socketPort,
                              this.maxProcessThread);
    Socket incomingConnection = null;
    while (true) {
      incomingConnection = server.accept();
      handleConnection(incomingConnection);
    }

  }

  /**
   * 响应请求
   * @param connectionToHandle Socket
   */
  protected void handleConnection(Socket connectionToHandle) {
    PooledConnectionHandler.processRequest(connectionToHandle);
  }

  public void setServerSocket(ServerSocket serverSocket) {
    this.serverSocket = serverSocket;
  }

  public void setMaxProcessThread(int maxProcessThread) {
    this.maxProcessThread = maxProcessThread;
  }

  public void setSocketPort(int socketPort) {
    this.socketPort = socketPort;
  }

  public void setServer(ServerSocket server) {
    this.server = server;
  }

  public ServerSocket getServerSocket() {
    return serverSocket;
  }

  public int getMaxProcessThread() {
    return maxProcessThread;
  }

  public int getSocketPort() {
    return socketPort;
  }

  public ServerSocket getServer() {
    return server;
  }

  public void Release() {

    try {
      int nSize=ThreadPool.size();
      for (int i = 0; i < nSize; i++) {
        Thread ts = (Thread) ThreadPool.get(i);
        ts.interrupt();
        ts = null;

      }
      ThreadPool.clear();
      ThreadPool = null;

    }
    catch (Exception e) {}


  }
}

⌨️ 快捷键说明

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