【发布时间】:2017-07-26 16:38:29
【问题描述】:
您好,我有一个向设备发送文本的应用程序,设备会在显示屏上显示它。为了传输数据,我在 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();
}
如何从套接字发送数据和读取响应?
【问题讨论】:
-
不太确定问题出在哪里,但 readLine() supposed 会挂起 - 它会一直挂起,直到另一端实际发送了一行(或直到连接超时或损坏)。我建议尝试使用 netcat 发送相同的消息并查看是否收到响应 - 这可能是服务器的问题,而不是客户端的问题。
-
服务器在收到我刚刚发送的数据后向我发送
OK,我该怎么办? @SirGregg