2013-04-30 44 views
1

我寫了一個應用程序連接到java服務器。它會向服務器發送一條小消息,如果消息處於「打開」狀態,則服務器應答。對於任何其他情況,服務器不發回數據。Wifi套接字連接空指針異常在回答

我寫了一行來檢查輸入流是否爲null,但是在沒有從服務器接收到響應時它得到一個空指針異常。它對我來說很奇怪:

if(!(line = in.readLine())。equals(null)){Remote.setValue(line); }

所以,如果「行」爲空,那麼它應該跳過(或轉到其他部分,如果它會在哪裏),我設置的值的一部分,但它掛在。只需阻止整個應用程序。

我做錯了什麼?爲什麼是這樣?我該如何解決它?請幫忙!

+0

這將拋出一個NullPointerException。 – SLaks 2013-04-30 13:43:39

回答

0

您不檢查輸入流是否爲空。你正在檢查是否readLine返回null。

試試這個:

if (in != null) { 
    line = in.readLine(); 
    if (line != null) { 
     Remote.setValue(line); 
    } 
} 

編輯:

使用socket.setSoTimeout (x)其中x是爲了in.readLine()不阻塞,直到輸入可用一些正整數。

+0

我試了一下,它掛在「line = in.readLine();」 – Robert 2013-04-30 14:20:14

+0

in不爲空,但第二個if永遠不會執行 – Robert 2013-04-30 14:22:16

+0

您應該爲套接字設置一個超時值。否則,它會阻止,直到有東西要讀。 – Eran 2013-04-30 14:25:04