我有非常簡單的TCP套接字偵聽器。當字符爲null
或#
時,我想停止接收數據。Java TCP套接字偵聽器
while ((line = in.readLine()) != null && !line.equals("#")){
tcpData = tcpData + line;
}
server.close();
由於代碼流不關閉套接字。只有當我從超級終端關閉時才關閉套接字。我錯過了什麼?
我有非常簡單的TCP套接字偵聽器。當字符爲null
或#
時,我想停止接收數據。Java TCP套接字偵聽器
while ((line = in.readLine()) != null && !line.equals("#")){
tcpData = tcpData + line;
}
server.close();
由於代碼流不關閉套接字。只有當我從超級終端關閉時才關閉套接字。我錯過了什麼?
因爲readLine()
僅在流結束時返回null,當對等關閉連接時,只發生在TCP套接字中。
......並且顯然你永遠不會發送由#
加上行結束符組成的行。
遠程終端發送傳感器數據。例如字符串爲$ 353323058181636,EV,D,T,567888.9,+ 12C,FFFFE000#,其中$是起始字符,#是數據字符的結尾。每個分組都會每分鐘到來。在我的情況下,當數據結束套接字需要關閉套接字。 –
所以你正在閱讀線條,但它不是發送線條。所以不要使用'readLine()'。 – EJP
1.服務器發送「#」嗎? 2.服務器是否結束該行? 3.服務器是否關閉連接? – Fildor
除非要讀取*行*,否則不要使用'readLine'。 –
我能用什麼改爲readline? –