[英]Java socket programming writebytes to readline
我想讓一個java服務器和客戶端進行通信。 為了將數據流傳輸到服務器,我有以下代碼:
Socket ClientSocket = null;
ClientSocket = new Socket(IPAddress, portInt);
DataOutputStream outToClient = new DataOutputStream(ClientSocket.getOutputStream());
outToClient.writeBytes(command);
outToClient.flush();
對於我有的服務器:
ServerSocket mysocket = new ServerSocket(8081);
Socket connectionsocket = mysocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionsocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionsocket.getOutputStream());
//program hangs here, client not sending
GetRequest = inFromClient.readLine();
System.out.println("Received: " + GetRequest);
這些只是整個代碼的一小部分,我發現當readLine()時程序掛在服務器端; 到達了。 我試圖用writeBytes(命令)發送數據; 其中command是一個字符串。 有什么建議么? 謝謝。
readbytes到readline
停在那兒。 如果您正在使用readLine()
那么您正在使用BufferedReader
,這是一個Reader
,這意味着您應該使用Writer
與它通信,這意味着您應該使用BufferedWriter
,並且當您正在讀取BufferedWriter
,您必須寫行,這意味着寫一個行終止符(你當前沒有這樣做),這意味着你應該使用BufferedWriter.newline()
。
或PrintWriter.println(),
但不要忘記檢查錯誤,因為它吞下異常。
不要直接使用readLine
而是試試這個
If( inFromClient.ready()){
// read string here.
}
緩沖區可能沒有准備就緒並且您正在嘗試閱讀。 所以它可以創造問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.