我試圖讓我的客戶端連接到我的服務器,並根據命令發送一些字符串回客戶端。目前,應用程序連接並可以非常好地向服務器發送字符串。但是,當我發送命令指示服務器發回一些東西時,它會掛起。我發現客戶端嘗試讀取服務器發送的行時會發生此問題。Java readline()保持套接字打開
服務器
PrintWriter out = new PrintWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
out.println("GETDATA" + "\n");
out.flush();
out.close();
客戶
BufferedReader fromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
incomingLine = fromServer.readLine();
Log.d("HERE", "NOT " + incomingLine);
fromServer.close();
謝謝!
我所做的更改 服務器寫入到客戶端請求後'OUT =新的DataOutputStream類(clientSocket.getOutputStream()); \t out.writeUTF(「This」); \t out.flush(); ' 客戶端讀取什麼發回'DataInputStream inStr = new DataInputStream(clientSocket.getInputStream()); \t \t \t \t incomingLine = inStr.readUTF();' 然而,在讀取,在此情況下在掛起的readUTF(); – Dandrews 2013-04-25 22:44:01
@ user1116969嗯?你只需要說'out = client.getOutputStream()'。但是,是的,這應該工作。 – Zyerah 2013-04-25 22:45:28
它們不是'不兼容'。它們都默認使用平臺字符集,如果*那些*不兼容,則會出現問題。但是,您可以始終使用相同的字符集構建兩者。不過,PrintStream和PrintWriter都會吞下網絡編程中需要了解的異常,因此不應在網絡上使用它們。 – EJP 2013-04-25 22:46:31