From 40436887f67d5ea4713908ff9dcbd07121b62d86 Mon Sep 17 00:00:00 2001 From: whyclj <1525436766@qq.com> Date: 星期二, 20 十月 2020 16:48:31 +0800 Subject: [PATCH] 修改 --- EquieDeviceData/src/com/dev/data/SteamTurbineUDPServer_Thread.java | 51 +++++++++++++++++++++++++++++++-------------------- 1 files changed, 31 insertions(+), 20 deletions(-) diff --git a/EquieDeviceData/src/com/dev/data/SteamTurbineUDPServer_Thread.java b/EquieDeviceData/src/com/dev/data/SteamTurbineUDPServer_Thread.java index 6c24bd5..73e1aa3 100644 --- a/EquieDeviceData/src/com/dev/data/SteamTurbineUDPServer_Thread.java +++ b/EquieDeviceData/src/com/dev/data/SteamTurbineUDPServer_Thread.java @@ -44,6 +44,7 @@ System.out.println("SteamTurbineUDPServer_Thread start at "+Com.getDateTimeFormat(new Date(), Com.DTF_YMDhms)); try { byte[] data = null; + int conn_error_count = 0; while(true) { DatagramSocket ds = null; try { @@ -51,27 +52,37 @@ DatagramPacket packet = new DatagramPacket(data, data.length); //监听指定的端口 ds = new DatagramSocket(server_port); + ds.setSoTimeout(5000); + conn_error_count = 0; while (true) { - ds.receive(packet); - byte[] headCount = new byte[2]; - System.arraycopy(data, 0, headCount, 0, headCount.length); - //System.out.println("数据包长度"+createPackHeadCount(data)); - BaseData basedata = new BaseData(); - ByteBuffer bf = ByteBuffer.allocate(createPackHeadCount(data)); - if(createPackHeadCount(data) > data.length) { - continue; //过滤超标数据帧 - } - bf.order(ByteOrder.LITTLE_ENDIAN); - bf.put(data,0,createPackHeadCount(data)); - bf.flip(); - //System.out.println(ComFn.bytesToHexString(data, createPackHeadCount(data))); - if(basedata.putSteamTurByteBuffer(bf,cfg.isEquie_device_udppackage_cheak())) { - String client_ip = packet.getSocketAddress().toString(); - RecordUDPPackage.RecordUDPPackageData(RecordUDPPackage.PackageType_SteamTurbine, client_ip, bf.array()); - - SteamTurbine_Thread steam_thread = new SteamTurbine_Thread(conn_pool, devices,cfgdatas,basedata); - new Thread(steam_thread).start(); - //System.out.println(basedata); + try { + ds.receive(packet); + byte[] headCount = new byte[2]; + System.arraycopy(data, 0, headCount, 0, headCount.length); + //System.out.println("数据包长度"+createPackHeadCount(data)); + BaseData basedata = new BaseData(); + ByteBuffer bf = ByteBuffer.allocate(createPackHeadCount(data)); + if(createPackHeadCount(data) > data.length) { + continue; //过滤超标数据帧 + } + bf.order(ByteOrder.LITTLE_ENDIAN); + bf.put(data,0,createPackHeadCount(data)); + bf.flip(); + //System.out.println(ComFn.bytesToHexString(data, createPackHeadCount(data))); + if(basedata.putSteamTurByteBuffer(bf,cfg.isEquie_device_udppackage_cheak())) { + String client_ip = packet.getSocketAddress().toString(); + RecordUDPPackage.RecordUDPPackageData(RecordUDPPackage.PackageType_SteamTurbine, client_ip, bf.array()); + + SteamTurbine_Thread steam_thread = new SteamTurbine_Thread(conn_pool, devices,cfgdatas,basedata); + new Thread(steam_thread).start(); + //System.out.println(basedata); + } + } catch (Exception e) { + conn_error_count++; + if(conn_error_count > 6) { + break; + } + //e.printStackTrace(); } //测试程序接收异常情况下,是否能正常运行 //System.out.println(1/0); -- Gitblit v1.9.1