[英]Java socket writeByte and newline
我有一個我似乎無法理解的問題。
如果我使用代碼段:
DataOutputStream dataoutput = new DataOutputStream(Socket.getOutputStream());
dataoutput.writeBytes(diagnostics);
dataoutput.flush();
從服務器發送到客戶端的output:diagnostics掛起,即使使用.flush()也無濟於事。 只有關閉套接字才會釋放數據包。
但是,如果我添加換行符:
dataoutput.writeBytes(diagnostics+"\n");
它完美地工作。 如果您復制代碼,
dataoutput.writeBytes(diagnostics);
dataoutput.writeBytes(diagnostics);
您得到的輸出與帶有/ newline的輸出相同,沒有重復的數據。 為什么?
編輯:客戶端。
incoming = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
response = incoming.readLine();
就像好家伙在評論中一樣,您應該使用沖洗功能來強制將有效負載發送到流的目的地。 但是,如果這不起作用,我建議嘗試以下方法:
DataOutputStream dataoutput = new DataOutputStream(System.out);
dataoutput.writeBytes(diagnostics);
dataoutput.flush();
因此,現在的目的地將是“本地”控制台。 並且流的源和目標之間沒有遠程連接,也許您可以嘗試在“本地”正常運行(並專注於DataOutputStream行為),然后開始解決遠程流處理過程。
希望不多,但希望能有所幫助!
問候!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.