2013-05-21 60 views
-3

我最近在一個套接字項目。當我調試運行我的代碼,我發現一個問題,但我不能找出原因,下面是我的代碼儘管它沒有去下一行,儘管它應該結束

// some code that open a socket connection and put inputstream into a BufferedReader called 'in' 

String input; 
input= (String)in.readLine(); 
do{ 

    System.out.println(input); 

}while(input!=null); 

out.close(); 
in.close(); 
Socket.close(); 

,你可以看到,上面的代碼創建一個無限循環,當我發送一個字符串服務器端,它保持println那個字符串。

,如果我不喜歡它下面

String input; 

do{ 
    input= (String)in.readLine(); 
    System.out.println(input); 

}while(input!=null); 

out.close(); 
in.close(); 
Socket.close(); 

的問題解決了,和它的偉大工程。每次我從服務器站點發送一個字符串,它只是打印一次。但它沒有退出循環並轉到下一行關閉套接字連接。

所以這是我的問題。如果我把它放在do while循環中。如果循環結束並轉到下一行然後斷開連接?任何人都可以解釋爲什麼while循環只執行一次,並沒有去下一行?

最佳

回答

1

如果input= (String)in.readLine();是在do-while循環,當你在閱讀null,它將打印null然後退出循環。然後,將執行out.close();in.close();Socket.close();

+0

謝謝你幫助男人。有3個投票給我的問題。大聲笑。是的,我知道它應該退出循環並轉到下一行。但事實並非如此。它只打印收入字符串一次,但沒有關閉套接字。這就是爲什麼我問這個問題。 – jing1988ccc

+0

它應該執行語句,如果它退出循環。你確定它已經退出循環?還是有例外嗎? – Adarsh

+0

也許服務器永遠不會發送空...也許你需要一個不同/額外的終止條件。 –

相關問題