2014-10-10 32 views
0

I如果我輸入xml消息並且如果它以>>>結束表示消息1結束,則從commnad提示(模擬器)讀取xml消息,即何時我按Enter鍵調用服務器端線程並處理消息。如果我再輸入一個xml消息給出輸入我收到第一條消息和最後一條消息,但我不想要第一條消息,所以給我解決方案以消除它如何從java中的輸入流中讀取命令提示符時消除重複消息

下面的代碼是在線程內while(true)it將始終收聽郵件併發送給服務器,同時發送我只想要最新的消息。

while(true){ 
      if(clientsoc != null){ 
       tempchar=br.readLine(); 
       inputstring=inputstring+tempchar; 
       if(inputstring.endsWith(">>>")){ 
        inputstring=inputstring.replaceAll(">>>",""); 
        serverstream.write(inputstring.getBytes()); 
       } 
      } 
     catch (Exception e) { 
      try { 
       serverstream.close(); 
       serverstream = null; 
       clientsoc.close(); 
       clientsoc = null; 
      } catch (Exception e1) { 
       clientsoc = null; 
       serverstream = null; 
      } 
} } 
+1

Clean通過在'serverstream.write(...);'後面加上'inputstring =「」;'來實現前面的消息。 – 2014-10-10 10:19:20

+0

我已經完成,但它不起作用 – Vskiran 2014-10-10 10:34:43

+0

它是如何錯誤地行事? – 2014-10-10 10:55:56

回答

0

如果我這樣做是正確,你只是想,當用戶輸入喜歡的字符串:

"message1>>>message2>>>" 

這就是被髮送到服務器:

"message2" 

在這種情況下, ,一個非常簡單的條件檢查可能是:

if (inputstring.endsWith(">>>")) { 
    inputstring = inputstring.substring(0, inputstring.length()-3); 
    int previousSeparatorIdx = inputstring.lastIndexOf(">>>"); 
    if (previousSeparatorIdx >= 0) { 
     inputstring = inputstring.substring(previousSeparatorIdx+3); 
    } 
    serverstream.write(inputstring.getBytes()); 
}