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

📄 server.java

📁 javaservice在windows制作服务程序
💻 JAVA
字号:
import java.util.*;import java.io.*;import java.net.*;public class Server {  protected Map services;  Set connections;              int maxConnections;             int freeConn;  ThreadGroup threadGroup;  private int currentConn;  private PrintWriter log = new PrintWriter(System.out, true);  public boolean connected = false;  public Properties proPort, proNum;    public synchronized void setControlFlag() {  	connected = true;  }    public synchronized void removeControlFlag() {  	connected = false;  }    public void setProperty(Properties proPort, Properties proNum) {  	this.proPort = proPort;  	this.proNum = proNum;  }    public Server(int maxConn) {      this.maxConnections = maxConn;      this.freeConn=maxConnections;      this.threadGroup = new ThreadGroup(Server.class.getName());      currentConn = 0;      this.services = new HashMap();      this.connections = new HashSet(maxConnections);  }  public synchronized void addService(Service service,int port, int maxConn) throws IOException {      String servicename = service.getClass().getName();      Integer key = new Integer(port);      if (services.get(key) != null) throw new IllegalArgumentException("端口:" + port + " 已经被占用!");      if (getfreeConnections(maxConn)>=0) {          Listener listener = new Listener(this, port, service, maxConn);          services.put(key,listener);          log.println("启动" +  servicename + "服务在" + port +"端口上");          listener.start();      } else {          System.err.println("系统并发连接限制已经达到最大值!");          System.err.println("服务" + servicename + " 启动失败!");      }  }  public synchronized void addService(Service service,int port) throws IOException {      this.addService(service,port,10);  }  public synchronized boolean removeService(int port) {      Integer key = new Integer(port);      int maxConn =10;      final Listener listener = (Listener) services.get(key);      if (listener == null) {            log.println("Service " + " isn't started on port " + port);            return false;      }      services.remove(key);      listener.pleaseStop();       freeConn+=listener.maxConn;      log.println("Close " + listener.service + " on port " + port);      return true;  }  public synchronized void displayStatus(PrintWriter out) {      Iterator keys = services.keySet().iterator();      while (keys.hasNext()) {          Integer port = (Integer) keys.next();          Listener listener = (Listener) services.get(port);          out.println("服务" + listener.service + "运行" + port + "\n");      }      out.println("连接限制为" + maxConnections);      Iterator conns = connections.iterator();      while (conns.hasNext()) {          Socket s = (Socket) conns.next();          int sport = s.getLocalPort();          Listener listen = (Listener) services.get(new Integer(sport));          String servicename = listen.service;          out.println("服务" + servicename + "响应请求在" + s.getInetAddress().getHostAddress() + "的" + sport + "端口上" + "\n");      }      out.println("当前连接数为" + currentConn);      out.println("当前系统空闲连接数为" + freeConn);  }  private synchronized int getfreeConnections(int maxConn) {      int num = -1;      if (freeConn >= maxConn) {            freeConn-=maxConn;            num = freeConn;      }      return num;  }  public synchronized int getConnections() {      return currentConn;  }  public synchronized int  addConnections(Socket s) {      connections.add(s);      return currentConn++;  }  public synchronized int  removeConnections(Socket s) {      connections.remove(s);      try {          s.close();      } catch (Exception e) {      	  System.out.println(e.getMessage());      }      return currentConn--;  }  public synchronized int getConnections(int connections) {      int num = 0;      if ((num=freeConn-connections) >= 0) {          freeConn = num;      } else num = -1;      return num;  }  private synchronized int getFreeConn() {      return freeConn;  }}

⌨️ 快捷键说明

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