package com.basic.security.utils.socket; import android.os.SystemClock; import com.basic.security.base.BaseApplication; import com.basic.security.utils.Constants; import com.basic.security.utils.SocketUtil; import java.net.ServerSocket; import java.net.Socket; public class RelaySocketServer { public static void startSocketServer() { BaseApplication.getApplication().executorService.execute(() -> { ServerSocket server = null; try { server = new ServerSocket(Constants.relayServerPort); } catch (Exception e) { e.printStackTrace(); } while (true) { try { if (server == null) { break; } Socket client = server.accept(); RelayAcceptedClient yuvSocketClient = new RelayAcceptedClient(client); yuvSocketClient.start(); } catch (Exception e) { e.printStackTrace(); } finally { SystemClock.sleep(3000); } } }); } public static class RelayAcceptedClient extends Thread { Socket mSocket; public RelayAcceptedClient(Socket socket) { this.mSocket = socket; } public void run() { SocketUtil socketUtil = new SocketUtil(); try { socketUtil.setSocket(mSocket); String openDoor = socketUtil.readJsonAsMap().get("openDoor"); if (openDoor != null && "openDoor".equals(openDoor)) { if (socketUtil.remoteIpAllowed()) { if (RelayServerUtil2.open()) { socketUtil.writeMessage("result", "ok"); return; } } } socketUtil.writeMessage("result", "fail"); } catch (Exception e) { e.printStackTrace(); } finally { socketUtil.close(); } } } }