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();
|
}
|
}
|
}
|
}
|