簡體   English   中英

Java套接字編程寫入readline

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

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