📄 smsserver.java
字号:
package com.yuther.sms.server;import java.io.IOException;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.Properties;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import org.apache.log4j.Logger;/** * 短信服务端 * * * @author yuther * */public class SmsServer { static Logger log = Logger.getLogger(SmsServer.class); /** 服务端侦听端口 */ static int PORT; /** 侦听socker */ static ServerSocket serverSocket = null; /** 线程池 */ private ExecutorService executorService; /** 单个CPU时线程池工作数目 */ static int POOL_SIZE; /** * 对侦听端口、缓冲池大小进行初始化 读取配置信息文件conf.properties * * @throws IOException */ public SmsServer() throws IOException { Properties p = new Properties(); try { InputStream ins = SmsServer.class.getClassLoader() .getResourceAsStream("conf.properties"); p.load(ins); } catch (Exception e) { log.error("获取配置文件出错", e); return; } SmsServer.PORT = Integer.parseInt(p.getProperty("LISTEN_PORT")); SmsServer.POOL_SIZE = Integer.parseInt(p.getProperty("POOL_SIZE")); log.info("Server.LISTEN_PORT:" + SmsServer.PORT); log.info("Server.POOL_SIZE:" + SmsServer.POOL_SIZE); } /** * 调用此方法服务器开始启动 */ public void service() { // 得到CPU个数 int cpu_num = Runtime.getRuntime().availableProcessors(); log.info("探测出服务器CPU个数为:" + cpu_num); // 创建一个线程池大小为cpu_num*POOL_SIZE executorService = Executors.newFixedThreadPool(cpu_num * POOL_SIZE); try { serverSocket = new ServerSocket(PORT); log.info("Listening " + PORT + "..."); } catch (Exception e) { log.info("bind listener port " + PORT + " error.", e); System.exit(-1); } while (true) { Socket socket = null; try { socket = serverSocket.accept(); //运行短信任务线程 executorService.execute(new SmsTaskThread(socket)); } catch (Throwable e) { log.error("listen socket something errors", e); System.exit(-1); } } } public static void main(String[] args){ try { //启动服务 SmsServer smsServer = new SmsServer(); smsServer.service(); } catch (IOException e) { log.error("启动服务失败!",e); System.exit(-1); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -