当前位置: 代码迷 >> Java Web开发 >> 接收客户端的上报数据,解析入库,正常情况一下一次获取的是一条记录;但是有时候两个记录同时上报,如何避免
  详细解决方案

接收客户端的上报数据,解析入库,正常情况一下一次获取的是一条记录;但是有时候两个记录同时上报,如何避免

热度:59   发布时间:2016-04-16 21:27:27.0
接收客户端的上报数据,解析入库,正常情况一下一次获取的是一条记录;但是有时候两个记录同时上报,如何处理?
接收客户端的上报数据,解析入库,正常情况一下一次获取的是一条记录;但是有时候两个记录同时上报,如何处理?

       public void run() {
            try {
                timerTask = new OneSocketTimerTask();
                timer.schedule(timerTask, SOCKET_CONN_TIMEOUT * 1000);
                
                din = new DataInputStream(client.getInputStream());
                dos = new DataOutputStream(client.getOutputStream());
                
                while (true) {
                    byte[] b = new byte[512];
                    if (din.read(b) > 0) {
                        String value = new String(b, "utf-8").trim()
                        
                        if (dataUpManager.addData(value)) {
                            dos.write("success".getBytes());
                        } else {
                            dos.write("fail".getBytes());
                        }
                        
                        resetTimer();
                    }
                }
            } catch (Exception e) {
                
            }

正常情况下每次获取一条记录,例如:AB5521CD443;解析后再次收到2A5521CD4439F,长度可以不同。但是都是一次一条;
但是有时候两条记录同时上报,变成:
9FB5521CD443(回车换行)
76FD034D66

上面的代码怎么修改?谢谢
------解决思路----------------------
这个你可以自己测试下:

String line = null;
while ((line = din.readLine()) != null){
   String value = line.trim().
  
}

自己测试下,结果对了就行,自己看着办
  相关解决方案