簡體   English   中英

Java套接字writeByte和換行符

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM