a
554325746@qq.com
2020-01-02 e52632329ef8342a2f692bf58184fc54db3d2b4c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.basic.security.utils.socket;
 
import android.os.SystemClock;
 
import com.basic.security.base.BaseApplication;
import com.basic.security.manager.OfficeDeviceManager;
import com.basic.security.model.OfficeDevice;
import com.basic.security.utils.Constants;
import com.basic.security.utils.SocketUtil;
 
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Map;
 
public class OfficeSocketServer {
 
    public static boolean serverStarted = false;
 
    public static void startSocketServer() {
        if (serverStarted) {
            return;
        }
        BaseApplication.getApplication().executorService.execute(() -> {
            ServerSocket server = null;
            try {
                server = new ServerSocket(Constants.officeServerPort);
            } catch (Exception e) {
                e.printStackTrace();
            }
            while (true) {
                try {
                    if (server == null) {
                        break;
                    }
                    serverStarted = true;
                    Socket client = server.accept();
                    OfficeAcceptedClient officeAcceptedClient = new OfficeAcceptedClient(client);
                    officeAcceptedClient.start();
                } catch (Exception e) {
                    e.printStackTrace();
                } finally {
                    SystemClock.sleep(3000);
                }
            }
        });
 
    }
 
    public static class OfficeAcceptedClient extends Thread {
 
        Socket mSocket;
 
        public OfficeAcceptedClient(Socket client) {
            mSocket = client;
        }
 
        @Override
        public void run() {
            SocketUtil socketUtil = new SocketUtil();
            try {
                socketUtil.setSocket(mSocket);
                Map<String, String> map = socketUtil.readJsonAsMap();
                String ip = map.get("ip");
                String deviceName = map.get("deviceName");
                if (deviceName == null || "null".equals(deviceName)) {
                    deviceName = "";
                }
                if (ip != null && ip.length() > 0) {
                    Map<String, String> officeDevice = map;
                    officeDevice.put("ip", ip);
                    officeDevice.put(OfficeDevice.deviceIp, ip);
                    officeDevice.put(OfficeDevice.deviceName, deviceName);
                    OfficeDeviceManager.addOfficeDevice(officeDevice);
                    socketUtil.writeMessage("result", "ok");
                } else {
                    socketUtil.writeMessage("result", "error");
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                socketUtil.close();
            }
        }
 
    }
 
}