package com.hxzkoa.udp; import java.io.IOException; import java.lang.Thread.State; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; import com.hxzkoa.json.tb_system; import com.hxzkoa.json.tb_tag; import com.hxzkoa.services.SysSettingService; import com.hxzkoa.util.Config; import com.hxzkoa.util.HttpUtil; import com.hxzkoa.util.ModifyConfig; import net.sf.json.JSONObject; /** 该类用于接收UDP报文 */ public class Zhuce_Receive implements Runnable { static DatagramSocket socket; DatagramPacket packet; int times = 5; Thread t = new Thread(this); public static List> ZhuceMessage = new ArrayList>(); public static void insert(String hex,String ip) { List tmp = new ArrayList(); tmp.add(hex); tmp.add(ip); ZhuceMessage.add((ArrayList) tmp); } @Autowired private SysSettingService sysSettingService; /** * 初始化对象 * * @throws NumberFormatException * @throws IOException */ /** 启动线程的方法 */ public void startThread() { t.start(); } /** 停止线程的方法 */ public void stopThread() { try { Thread.sleep(2000); t.interrupt(); } catch (InterruptedException e) { e.printStackTrace(); } } // /** 查看线程状态的方法 */ public State getState() { State state = t.getState(); return state; } public void run() { while (true) { try { if (ZhuceMessage.size()>0){ String datas = ZhuceMessage.get(0).get(0); String ip = ZhuceMessage.get(0).get(1); //报文处理 String BaowenPath = Config.getBaowenConfig(); System.out.println("baowenswitch"+ModifyConfig.readData(BaowenPath, "baowenSwitch")); String baowenStatus = ModifyConfig.readData(BaowenPath, "baowenSwitch"); if(datas!=null){ int lenth = datas.length(); String hex = datas.toUpperCase(); String postUrl = Config.getPostUrl(); // String MessageUrl=postUrl+"getMessage.do"; String messageJson = GetNowTime.timestamp2()+ " 收:" +datas; // 如果是注册信息 if (hex.startsWith("55AA0A") && lenth == 48) { if (baowenStatus.equals("1")){ /* Udp_Receive.zhuceMessage.add(messageJson); */ } // 调用处理注册信息的方法 Dell_tag_reg_ms.dellrgs(hex, ip); // 处理返回的读取配置信息成功 } } ZhuceMessage.remove(0); Thread.sleep(0); } else { Thread.sleep(300); } } catch (Exception e) { e.printStackTrace(); // 输出异常信息 } } } public static DatagramSocket getSocket() { return socket; } public static byte[] subBytes(byte[] src, int begin, int count) { byte[] bs = new byte[count]; System.arraycopy(src, begin, bs, 0, count); return bs; } public static void main(String[] args) { // try { // Udp_Receive receive = new Udp_Receive("8081"); // receive.run(); // } catch (Exception e) { // e.printStackTrace(); // } // String result = "{\"result\":{\"addtime\":\"2021-02-24 09:41:06\",\"dong_status\":\"\",\"gaodu\":\"155\",\"gongfang\":\"\",\"id\":35,\"imu\":\"\",\"pinglv\":\"2\",\"power\":\"100\",\"sleep_satus\":\"\",\"sleep_time\":\"\",\"state\":\"未绑定\",\"status\":\"status\",\"sudu\":\"无\",\"tag_id\":\"1013\",\"version\":\"V2.21\"}}"; // // String result = "{\"result\":\"1103\"}"; // JSONObject re_tag_bw = JSONObject.fromObject(result); // System.out.println("----------response:" + re_tag_bw.toString()); // tb_tag re_tag = (tb_tag) JSONObject.toBean(JSONObject.fromObject(re_tag_bw.get("result").toString()), // tb_tag.class); // // System.out.println(re_tag.toString()); // System.out.println(re_tag.getTag_id()); // JSONObject json = JSONObject.fromObject(result); // System.out.println(json.toString()); } }