package com.lfk.justweengine.utils.webServer; import android.content.Context; import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * Thread Controller * * @author liufengkai * Created by liufengkai on 16/1/6. */ public class Servers extends Thread { // listen to connect private ServerSocket serverSocket; // log / error handler listener private static WebServer.MessageHandler logResult; private Context context; private boolean IsRunning; // solve threads private static ExecutorService exe; public Servers(Context context, WebServer.MessageHandler logResult, int port) { super(); this.context = context; Servers.logResult = logResult; this.IsRunning = true; exe = Executors.newCachedThreadPool(); try { serverSocket = new ServerSocket(port, 0, InetAddress.getByName(WebServerDefault.WebServerIp)); logResult.OnResult("listen to :" + WebServerDefault.WebServerIp + ":" + port); } catch (IOException e) { e.printStackTrace(); logResult.OnError("Server IO error"); } } @Override public void run() { super.run(); while (IsRunning) { try { logResult.OnResult("<<<<<<< waiting >>>>>>>"); Socket s = serverSocket.accept(); logResult.OnResult("get from" + s.getInetAddress().toString()); exe.execute(new RequestSolve(s)); } catch (IOException e) { logResult.OnError(e.getMessage()); } } } public void stopServer() { IsRunning = false; try { serverSocket.close(); logResult.OnResult("Server close"); } catch (IOException e) { logResult.OnError(e.getMessage()); } } public static WebServer.MessageHandler getLogResult() { return logResult; } }