2015-11-24 207 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