套接字输入流的readLine导致套接字

时间:2017-07-26 16:38:30

标签: java android sockets

嗨我有一个应用程序,它将文本发送到设备,然后设备在显示器上显示它。用于传输数据我在AsyncTask

中使用套接字
            try {
                Socket socket = new Socket(DISPLAY_IP, DISPLAY_PORT);
                OutputStream out = socket.getOutputStream();
                PrintWriter output = new PrintWriter(out);
                output.println(params[0]);
                output.flush();
                socket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

问题是我在发送数据后无法读取套接字的响应。当我从套接字和读取行获取输入流时,我没有得到任何东西,并且设备没有显示我发送的数据,直到我关闭应用程序,所以我认为套接字在我这样做时阻塞

           try {
                Socket socket = new Socket(DISPLAY_IP, DISPLAY_PORT);
                OutputStream out = socket.getOutputStream();
                PrintWriter output = new PrintWriter(out);
                output.println(params[0]);
                output.flush();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
                String response = bufferedReader.readLine();
                socket.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

如何从套接字发送数据和读取响应?

2 个答案:

答案 0 :(得分:0)

您正在尝试与两个(客户端)Socket进行通信。对于沟通,您必须在一方实施(客户)java.net.Socket,另一方面实施 java.net.ServerSocket

您可以进一步阅读here

答案 1 :(得分:0)

你想要达到什么目的? 使用InputStream时,它将获取来自另一方的数据,而不是您刚刚发送的数据。 正如SirGregg所说,readLine将一直挂到收到整条线。