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