嗨我有一個應用程序發送文本到設備,設備顯示它在顯示器上。在一個AsyncTask
類readLine套接字輸入流導致在套接字掛起
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()被認爲是掛起 - 直到一行實際上由另一端發送(或直到連接超時或斷開)。我建議嘗試使用netcat發送相同的消息並查看是否得到響應 - 這可能是服務器而不是客戶端的問題。 – SirGregg
服務器收到我剛剛發送的數據後向我發送'OK',那麼我該怎麼辦? @SirGregg –