嗨,我有一个向设备发送文本的应用程序,设备将其显示在显示器上。为了传输数据,我在AsyncTask类中使用socket
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();
}如何从套接字发送数据和读取响应?
发布于 2017-07-27 00:53:47
您正在尝试与两个(客户端)Socket进行通信。要进行通信,您必须在一端实现一个(客户端) java.net.Socket,在另一端实现一个java.net.ServerSocket.
你可以阅读更多的here。
发布于 2017-07-27 00:55:01
你想要达到什么目的?当使用InputStream时,它将获得来自另一端的数据,而不是您刚刚发送的数据。正如SirGregg所说,readLine将挂起,直到收到整个线路。
https://stackoverflow.com/questions/45332836
复制相似问题