public class MallShopSoketServer implements Runnable { private static Logger logger = Logger.getLogger(MallShopSoketServer.class); private int port = 8821; private ServerSocket serverSocket; private ExecutorService executorService;// 线程池 private final int POOL_SIZE = 10;// 单个CPU线程池大小 public MallShopSoketServer() { try { serverSocket = new ServerSocket(port); } catch (Exception e) { logger.error(e); } executorService = Executors.newFixedThreadPool(POOL_SIZE); logger.info("商城Sokect Server 启动,端口:" + port); } public void run() { try { while (true) { Socket socket = null; // 接收客户连接,只要客户进行了连接,就会触发accept();从而建立连接 socket = serverSocket.accept(); executorService.execute(new MallShopHandler(socket)); } } catch (Exception e) { logger.error(e); } } }
/** * 商城信息处理器 * * @author panxiuyan * */ public class MallShopHandler implements Runnable { private Logger logger = Logger.getLogger(MallShopHandler.class); private Socket socket; public MallShopHandler(Socket socket) { this.socket = socket; } /** * 获取Socket 输入流 * * @param socket * @return * @throws IOException */ private PrintWriter getWriter(Socket socket) throws IOException { OutputStream socketOut = socket.getOutputStream(); return new PrintWriter(socketOut, true); } /** * 获取socket 输出流 * * @param socket * @return * @throws IOException */ private BufferedReader getReader(Socket socket) throws IOException { InputStream socketIn = socket.getInputStream(); return new BufferedReader(new InputStreamReader(socketIn)); } public void run() { try { logger.info("New connection accepted " + socket.getInetAddress() + ":" + socket.getPort()); BufferedReader br = getReader(socket); PrintWriter pw = getWriter(socket); String msg = br.readLine(); pw.println(doMsg(msg)); } catch (IOException e) { logger.error(e); } finally { try { if (socket != null) socket.close(); } catch (IOException e) { logger.error(e); } } } /** * 处理信息 * * @param msg * @return */ public String doMsg(String msg) { ................. } }