package com.basic.security.utils.socket; import android.os.SystemClock; import android.util.Log; import com.basic.security.manager.impl.cblite.BaseSettingManager; import com.basic.security.utils.Constants; import com.basic.security.utils.IOUtil; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.net.Socket; import java.util.LinkedList; import java.util.List; public class RelayServerUtil2 { public static LinkedList openDoorThreadQueue = new LinkedList<>(); public static long lastOpenDoorThread = System.currentTimeMillis(); public static void startOpenDoorThread() { new Thread() { @Override public void run() { while (true) { synchronized (openDoorThreadQueue) { if (openDoorThreadQueue.size() > 0) { openDoorThreadQueue.clear(); lastOpenDoorThread = System.currentTimeMillis(); IOUtil.initIOUtil().openUNLOCK(); System.out.println("RelayServerUtil2.run 开门"); } } if (System.currentTimeMillis() - lastOpenDoorThread > BaseSettingManager.getOpenDoorDurationSeconds() * 1000) { IOUtil.initIOUtil().closeUNLOCK(); System.out.println("RelayServerUtil2.run 关门"); } SystemClock.sleep(1000); } } }.start(); } public static boolean open() { if (Constants.useAef) { synchronized (openDoorThreadQueue) { openDoorThreadQueue.add(System.currentTimeMillis()+""); } // System.out.println("RelayServerUtil2.open"); // IOUtil.initIOUtil().openUNLOCK(); return true; } boolean success = false; BufferedInputStream inputStream = null; BufferedOutputStream outputStream = null; Socket socket = null; ByteArrayOutputStream byteArray = null; try { socket = new Socket("192.168.1.100", 6722); socket.setSoTimeout(1000); inputStream = new BufferedInputStream(socket.getInputStream()); outputStream = new BufferedOutputStream(socket.getOutputStream()); outputStream.write("00".getBytes()); // 查询 // outputStream.write("21".getBytes()); // ch1 释放 返回00011000 // outputStream.write("11".getBytes()); // ch1 吸合 返回10011000 // outputStream.write("11:2".getBytes()); // CH1 吸合,30 秒后自动释放 返回10011000 outputStream.flush(); byte[] buff = new byte[256]; int len = 0; String ret = ""; while ((len = inputStream.read(buff)) != -1) { ret = new String(buff, "UTF-8"); System.out.println(ret); Log.e("test111", ret); break; } if ("1".equals(ret.charAt(0)+"")) { outputStream.write("21".getBytes()); // ch1 释放 返回00011000 } else { outputStream.write("11".getBytes()); // ch1 吸合 返回10011000 } outputStream.flush(); while ((len = inputStream.read(buff)) != -1) { ret = new String(buff, "ISO8859-1"); // System.out.println(ret); Log.e("test222", ret); break; } } catch (Exception e) { e.printStackTrace(); } finally { try { if (outputStream != null) { outputStream.close(); outputStream = null; } if (inputStream != null) { inputStream.close(); inputStream = null; } if (socket != null) { socket.close(); socket = null; } if (byteArray != null) { byteArray.close(); } } catch (IOException e) { } } return success; } }