2015-11-24 209 views
1

我有非常簡單的TCP套接字偵聽器。當字符爲null#時,我想停止接收數據。Java TCP套接字偵聽器

while ((line = in.readLine()) != null && !line.equals("#")){ 
    tcpData = tcpData + line; 
    } 
server.close(); 

由於代碼流不關閉套接字。只有當我從超級終端關閉時才關閉套接字。我錯過了什麼?

+0

1.服務器發送「#」嗎? 2.服務器是否結束該行? 3.服務器是否關閉連接? – Fildor

+2

除非要讀取*行*,否則不要使用'readLine'。 –

+0

我能用什麼改爲readline? –

回答

1

因爲readLine()僅在流結束時返回null,當對等關閉連接時,只發生在TCP套接字中。

......並且顯然你永遠不會發送由#加上行結束符組成的行。

+0

遠程終端發送傳感器數據。例如字符串爲$ 353323058181636,EV,D,T,567888.9,+ 12C,FFFFE000#,其中$是起始字符,#是數據字符的結尾。每個分組都會每分鐘到來。在我的情況下,當數據結束套接字需要關閉套接字。 –

+0

所以你正在閱讀線條,但它不是發送線條。所以不要使用'readLine()'。 – EJP