应用程序从服务器收到的消息不会超过一个,尽管它在发送消息时工作正常

问题描述 投票:1回答:2

我使用下面的代码从服务器接收消息,但它只获得一条消息,如“你好”,但第二条消息是“你好吗?”应用程序未检测到。我试图解决它,但我无法解决。

但是,没有任何错误。

这是我的代码:

new Thread(new Runnable() {
                    @Override
                    public void run() {
                        int available = 0;
                        while (true) {
                            try {
                                available = ClientInPutStream.available();
                                if (available > 0) {
                                    break;
                                }
                            } catch (IOException e) {
                                msg = e.toString();
                                showMSG();
                            }
                        }
                        try {
                            char[] ServerMSG = new char[available];
                            Reader.read(ServerMSG, 0, available);
                            StringBuilder sb = new StringBuilder();
                            sb.append(ServerMSG, 0, available);
                            msg = sb.toString();
                            showMSG();
                        } catch (IOException e) {
                            msg = e.toString();
                            showMSG();
                        }
                    }
                }).start();

提前致谢!

编辑:

我尝试下面的代码,我需要通过一个更新文本视图的按钮手动调用此线程你有任何解决方案吗?为了自动化它。

 new Thread(new Runnable() {
                    @Override
                    public void run() {
                        byte[] buffer = new byte[128];  // buffer store for the stream
                        int bytes; // bytes returned from read()
                        try {
                            bytes = ClientInPutStream.read(buffer);
                            byte[] readBuf =  buffer;
                            String strIncom = new String(readBuf, 0, bytes);                 
                            msg2+=strIncom;
                            showmsg();
                        }catch (Exception e){msg=e.toString();showError();}
                        }

                }).start();
java android runnable
2个回答
1
投票

它按照它所做的去做。您的代码告诉您只接收一条消息。在showMSG()之后尝试new Thread().start();。希望这可以帮助。


0
投票

最终解决方案

 new Thread(new Runnable() {
                        @Override
                        public void run() {
                            byte[] buffer = new byte[128];  // buffer store for the stream
                            int bytes; // bytes returned from read()
                            try {
                                while (true){
                                    bytes = ClientInPutStream.read(buffer);
                                byte[] readBuf = buffer;
                                String strIncom = new String(readBuf, 0, bytes);                 // create string from bytes array
                                msg2 += strIncom;
                                showmsg();
                                }
                            }catch (Exception e){msg=e.toString();showError();}
                            }

                    }).start();
© www.soinside.com 2019 - 2024. All rights reserved.