From 5a8bbcb100f37b8e17d6fda0d851d96dbace46e4 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期一, 04 十一月 2019 20:17:42 +0800 Subject: [PATCH] fix recv msg --- src/main/java/com/cloud/count/listener/CountListener.java | 154 +------------------------------------------------- 1 files changed, 5 insertions(+), 149 deletions(-) diff --git a/src/main/java/com/cloud/count/listener/CountListener.java b/src/main/java/com/cloud/count/listener/CountListener.java index f51b4db..6a12900 100644 --- a/src/main/java/com/cloud/count/listener/CountListener.java +++ b/src/main/java/com/cloud/count/listener/CountListener.java @@ -10,6 +10,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.ContextRefreshedEvent; +import org.springframework.stereotype.Service; + import java.io.*; import java.net.ServerSocket; import java.net.Socket; @@ -21,15 +23,9 @@ */ public class CountListener implements ApplicationListener<ContextRefreshedEvent> { - private Logger logger = LoggerFactory.getLogger(this.getClass()); - @Autowired - private CountDao dao; - - static final String CRLF = System.getProperty("line.separator"); static ServerSocket server; - static Integer port = 2010; - static boolean isServerReboot = false; + @Override public void onApplicationEvent(ContextRefreshedEvent contextRefreshedEvent) { @@ -46,157 +42,17 @@ catch (IOException e){ e.printStackTrace(); } - String encoding = "UTF-8"; - BufferedReader iReader = null; - BufferedWriter iWriter = null; - StringBuilder sb = null; - String lineContent = null; + while (true){ Socket client = null; try{ client = server.accept(); - - iReader = new BufferedReader(new InputStreamReader(client.getInputStream(), encoding)); - iWriter = new BufferedWriter(new OutputStreamWriter(client.getOutputStream(), encoding)); - - InputStream is=client.getInputStream(); - byte[] b=new byte[1024]; - is.read(b); - String str = new String(b); - - sendAck(iWriter); - try{ - String xmlStr = XmlUtil.toXmlStr(str); - - // 濡傛灉瀛樺湪TotalEnters銆傚垯璇佹槑杩斿洖鐨勬槸瀹炴椂鏁版嵁鐨剎ml - People people = null; - if(xmlStr.indexOf("TotalEnters")>-1){ - people = XmlUtil.realTimeXmlToPeople(xmlStr); - int inCreEnter = CountServiceImpl.addEnter(people.getEnters());//杩涘叆浜烘暟澧為噺 - int inCreExit = CountServiceImpl.addExit(people.getExits());//鍑哄幓浜烘暟澧為噺 - System.out.println("TotalEnters:"+people.getEnters()); - CountServiceImpl.totalEnters += inCreEnter; - CountServiceImpl.totalExits += inCreExit; - - - people.setEnters(CountServiceImpl.totalEnters);//灏嗙疮鍔犲悗鐨勬暟閲忓瓨鍒版暟鎹簱涓� - people.setExits(CountServiceImpl.totalExits); - boolean resultB = dao.savePeople(people); - - //鎬昏繘鍏ユ暟閲忔垨鑰呮�诲嚭鍘绘暟閲忥紝涓嶄竴瀹氬摢涓�涓厛鍒�2瀛楄妭int鐨勪笂闄�65535 -// if( CountServiceImpl.totalEnters < CountServiceImpl.baseEnters){ -// //琛ㄧず缁熻璁惧閲嶆柊鍚姩浜�,缁熻鍙傛暟褰掗浂 -// CountServiceImpl.initCountArgs(people); -// } - op: if(!isServerReboot){ - isServerReboot = true; - CountState state = dao.getCountState();//鎭㈠缁熻鐘舵�� - Date nowDate = new Date(); - Date BaseDate = new Date(state.getBaseTime()*1000L); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - if(!sdf.format(nowDate).equals(sdf.format(BaseDate))){//鍘嗗彶鏁版嵁涓嶇瓑浜庡綋澶� - CountServiceImpl.baseEnters = people.getEnters(); - CountServiceImpl.baseExits = people.getExits(); - CountServiceImpl.realtimeBaseEnters = people.getEnters(); - CountServiceImpl.realtimebBaseExits = people.getExits(); - CountServiceImpl.errorCount = 0; - break op; - } - //杩樺師鐘舵�� - CountServiceImpl.baseEnters = state.getBaseEnters(); - CountServiceImpl.baseExits = state.getBaseExits(); - CountServiceImpl.totalEnters = state.getTotalEnters(); - CountServiceImpl.totalExits = state.getTotalExits(); - CountServiceImpl.realtimeBaseEnters = state.getRealtimeBaseEnters(); - CountServiceImpl.realtimebBaseExits = state.getRealtimeBaseExits(); - CountServiceImpl.errorCount = state.getErrorCount(); - } - - //鎬昏繘鍏ヤ汉鏁板皬浜庢�诲嚭鍘荤殑浜烘暟锛岃〃绀虹粺璁¤澶囧湪鏀惧鏃堕棿锛堝嚭鍘荤殑浜烘暟澶т簬杩涘叆鐨勪汉鏁帮級閲嶅惎浜� - if(CountServiceImpl.totalEnters < CountServiceImpl.totalExits){ - CountServiceImpl.errorCount = CountServiceImpl.totalExits - CountServiceImpl.totalEnters; - }else - CountServiceImpl.errorCount = 0; - - CountState currentState = new CountState(); - currentState.setBaseEnters(CountServiceImpl.baseEnters); - currentState.setBaseExits(CountServiceImpl.baseExits); - currentState.setTotalEnters(CountServiceImpl.totalEnters); - currentState.setTotalExits(CountServiceImpl.totalExits); - currentState.setRealtimeBaseEnters(CountServiceImpl.realtimeBaseEnters); - currentState.setRealtimeBaseExits(CountServiceImpl.realtimebBaseExits); - currentState.setErrorCount(CountServiceImpl.errorCount); - currentState.setBaseTime(people.getTimestamp()); - dao.updateCountState(currentState);//鏇存柊褰撳墠缁熻鐘舵�� - } else { - System.out.println("noTotalEners"); - } - // 濡傛灉瀛樺湪ReportData銆傚垯璇佹槑杩斿洖鐨勬槸缁熻鏁版嵁鐨剎ml - if(xmlStr.indexOf("ReportData")>-1){ - people = XmlUtil.xmlToPeople(xmlStr); - dao.savePeople(people); - } - }catch (Exception e){ - System.out.println(e.getMessage()); - } - + new Thread(new CountThread(client)).start(); }catch (IOException ex){ - }finally { - try { - if(iWriter !=null) - iWriter.close(); - if(iReader !=null) - iReader.close(); -// if(client !=null) -// client.close(); - - }catch (IOException e){ - - } } } } }).start(); - } - - public static void sendAck(BufferedWriter iWriter) { - String statusLine = "HTTP/1.0 200 OK"+CRLF; - String contentTypeLine = "Content-type: text/html"+CRLF ; - String connectionClose = "Connection: Keep-Alive"+CRLF ; - String contentLengthLine = "Content-Length: 0"+CRLF +CRLF;; - - try { - iWriter.write(statusLine); - iWriter.write(contentTypeLine); - iWriter.write(connectionClose); - iWriter.write(contentLengthLine); - //iWriter.write(content); - iWriter.flush(); - iWriter.close(); - } catch (IOException ex) { - ex.printStackTrace(); - } - } - - // Send nack - public static void sendNack(BufferedWriter iWriter) { - String statusLine = "HTTP/1.1 400 Bad Request" + CRLF; - String contentTypeLine = "Content-type: text/html" + CRLF; - String connectionClose = "Connection: close" + CRLF; - String content = "<ErrorList><Error>error</Error></ErrorList>"; - String contentLengthLine = "Content-Length: " - + (new Integer(content.length())).toString() + CRLF + CRLF; - - try { - iWriter.write(statusLine); - iWriter.write(contentTypeLine); - iWriter.write(connectionClose); - iWriter.write(contentLengthLine); - iWriter.write(content); - iWriter.flush(); - } catch (IOException ex) { - ex.printStackTrace(); - } } } -- Gitblit v1.8.0