2014-01-30 35 views
0

我的應用程序有點問題。我通過一個套接字接收數據,通過BufferedReader。我循環使用while ((sLine = reader.readLine()) != null)並將sLine追加到StringBuilder對象。我也花了一個新的路線\ n建設者。在繼續之前,閱讀BufferedReader的所有行

這個計劃是,一旦建設者完成了,String sTotal = builder.toString()被調用並且總數傳遞給下一個例程。

但是,下一個例程是每行調用一次,而不是整個字符串。例程調用在上面的循環之外,所以我真的不知道爲什麼!

希望有人可以幫助...

編輯:下面的代碼提取。

public void run() { 
    try { 
     oServerSocket = new ServerSocket(iPort); 

     while ((!Thread.currentThread().isInterrupted()) && (!bStopThread)) { 
      try { 
       oSocket = oServerSocket.accept(); 
       this.brInput = new BufferedReader(new InputStreamReader(this.oSocket.getInputStream())); 
       StringBuilder sbReadTotal = new StringBuilder(); 
       String sReadXML = ""; 
       while ((sReadXML = brInput.readLine()) != null) { 
        sbReadTotal.append("\n"); 
        sbReadTotal.append(sReadXML); 
       } 
       sReadXML = sbReadTotal.toString(); 
       Log.d("XMLDATA", sReadXML); 
       processXML(sReadXML); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

    } catch (Exception e) { 
     /* Nothing Yet */ 
     e.printStackTrace(); 
    } 
} 
+1

你的問題真的不清楚 - 你的意思是「下一個例程」是什麼意思?另一種方法?該方法有什麼作用?如果你發佈了一些代碼,它會更加簡單。 –

+0

你能發佈一個更完整的代碼子集嗎? – ChaseMedallion

+0

@ChaseMedallion&Jon - 添加代碼:) – tip2tail

回答

1

如果你離開你的內部while循環,就意味着你達到了你的輸入流的末尾,(那個時候readLine()回報nullaccording to the docs)。

您應該查看客戶端,而不是服務器。什麼是建立客戶端套接字?你確定它沒有爲它發送的每一行建立一個單獨的連接嗎?