0
回答
socket基于tcp协议 Client端接收数据时遇到的问题
终于搞明白,存储TCO原来是这样算的>>>   
while (true) {
                        InputStream is_msg = null;
                        InputStream is_msg2 = null;
                        is_msg = new DataInputStream(socket_tcp.getInputStream());
                        is_msg2 = new DataInputStream(socket_tcp.getInputStream());
                        //这里是数据格式的转换
                        byte[] json_head = new byte[4];
                        is_msg.read(json_head);
                        int num1 = json_head[0] & 0xFF;
                        int num2 = ((json_head[1] << 8) & 0xFF00);
                        int num3 = ((json_head[2] << 16) & 0xFF0000);
                        int num4 = ((json_head[3] << 24) & 0xFF000000);
                        int Msg_len = num1 + num2 + num3 + num4;

                        byte[] json_body = new byte[Msg_len];
                        is_msg2.read(json_body);
                        String json_body_str = new String(json_body);
                        Log.i("Boocax_body", json_body_str);


                    }

我遇到的情况是这样的  使用while(true)来循环接收信息是由于server每秒给client发来20条以上的Json信息 而且发过来的数据流是连在一起的 无法使用 while ((line = in.readLine()) != null )这个判定条件 所以这时候问题就出现了 is_msg和is_msg2如果放在while(true)循环里面关闭 就会只能接收到一条Json信息 如果不关闭的话 我只能log出大约7~8条数据 然后会报错 打印的前7条json信息是正确的 第8条json打印出来前面是正确的后面就会是乱码 

图中空指针的问题是我将is_msg和is_msg2在while(true)外面.close()了 所以回报这个错 是否有大神能帮我解决上面的问题 GC和OOM的问题


<无标签>
举报
luyang0312
发帖于11个月前 0回/84阅
顶部