首页 > 解决方案 > 为什么我的服务器接收数据需要这么长时间?

问题描述

我正在编写代码以将数据从手机上的 android 客户端传输到 PC 上的服务器。我认为当我调用该函数在我的客户端上发送数据时,它应该将数据发送到客户端并且客户端会显示它。但是,消息(2 分钟)在我的电脑上显示需要很长时间。现在它甚至在服务器上什么也没有显示。有时它不显示任何消息。我想知道为什么会这样。这是我在客户端上发送数据的代码:

String str="abc";
btnSend = (Button) findViewById(R.id.send);
    btnSend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {                
            mThreadPool.execute(new Runnable() {
                @Override
                public void run() {
                    try {
                        outputStream = socket.getOutputStream();
                        PrintWriter pw=new PrintWriter(outputStream);

                        InputStream is=socket.getInputStream();
                        BufferedReader br=new BufferedReader(new InputStreamReader(is));
                        pw.write(str);                          
                        pw.flush();
                        String reply=null;
                        while(!((reply=br.readLine())==null)){
                            System.out.println("Receive the data of the server:"+reply);
                        }
                   
                        br.close();
                        is.close();
                        pw.close();
                        outputStream.close();
                        socket.close();


                    } catch (IOException e) {
                         Log.d("send",Log.getStackTraceString(e));
                    }
                    catch(NullPointerException e)
                    {
                        Log.d("send",Log.getStackTraceString(e));
                    }

                }
            });

下面是在服务器中接收数据的代码:

try {
            ServerSocket serverSocket=new ServerSocket(9102);
            Socket socket=serverSocket.accept();
            InputStream is=socket.getInputStream();
            BufferedReader br=new BufferedReader(new InputStreamReader(is));

            String info=null;
            while(!((info=br.readLine())==null)){
                System.out.println("I am the server:"+info);
            }
            OutputStream os=socket.getOutputStream();
            PrintWriter pw=new PrintWriter(os);
            String reply="welcome";
            pw.write(reply);
            pw.flush();
            pw.close();

            br.close();
            is.close();
            socket.close();
            serverSocket.close();

        } catch (IOException e) {
            e.printStackTrace();
        }


}

这是logcat: 客户端的logcat

标签: androidsockets

解决方案


推荐阅读