首页 > 解决方案 > 从 Android 设备上的 Java 服务器获取响应

问题描述

我正在从 android 手机向 Java 服务器发送一个请求,它在服务器端收到但无法在手机上获得响应 不知道为什么无法获得响应

下面是我的代码

private Socket client;
private PrintWriter printwriter;

class ClientThread implements Runnable {
    private final String message;

    ClientThread(String message) {
        this.message = message;
    }
    @Override
    public void run() {
        try {
            // Creates a stream socket and connects it to the specified port number on the named host.
            client = new Socket("192.168.0.88", 8094);  // connect to server
            printwriter = new PrintWriter(client.getOutputStream(),true);
            printwriter.write(message);  // write the message to output stream
            Log.d("server request", message);
            printwriter.flush();
            printwriter.close();

            runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    try {

                        BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
                        StringBuilder sb = new StringBuilder();
                        String line = reader.readLine();
                        // Read Server Response
                        Log.d("server response", line);
                    
                    } catch (Exception e){
                        e.printStackTrace();
                    }
                }
            });
            // closing the connection
            client.close();

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

标签: javaandroidsocketsserver

解决方案


去解决问题。在向服务器发送请求之前需要打开我的输入流

class ClientThread implements Runnable {
        private final String message;

        ClientThread(String message) {
            this.message = message;
        }

        @Override
        public void run() {
            try {
                String fromServer;
                Socket socket = new Socket("192.168.0.2", 8094);
                Log.d("server connect", "Connected!");
                boolean run = true;

                while (run) {
                    BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                    PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
                    out.println(message);
                    fromServer = in.readLine();
                    Log.d("server resp", "received2: " + fromServer);
                    if (fromServer.equals("olleH")) {
                        out.println("Bye");
                    }
                    socket.close();
                    in.close();
                    out.close();
                }

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

推荐阅读