📄 socketserver.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 + -