Java 插座最后总是超时

Java 插座最后总是超时,java,sockets,exception,timeout,Java,Sockets,Exception,Timeout,我有一个代码,需要从设备中获取一些信息。该设备具有插座连接。基本上是这样的: 我发送了一个命令并返回: <some info> <some info> <some info> <some info> 1.551 1.689 ... (A bunch of those numbers) 1.258 <more info> 如果没有剩余内容可供阅读,则对等方应已关闭连接。然后你会得到空值,你可以关闭你的终端。如果对方没有这样做,并且超

我有一个代码,需要从设备中获取一些信息。该设备具有插座连接。基本上是这样的:

我发送了一个命令并返回:

<some info>
<some info>
<some info>
<some info>

1.551
1.689
... (A bunch of those numbers)
1.258

<more info>

如果没有剩余内容可供阅读,则对等方应已关闭连接。然后你会得到空值,你可以关闭你的终端。如果对方没有这样做,并且超时时间足够长,您可以确信没有更多数据,那么超时时间就是您的证据,您既不能也不想避免它。

我找不到解决此问题的简单方法

我所做的是在读块中插入一个try/catch块。所以,当我读完这些点时,我转到try/catch块,它一直读到EOF。由于没有EOF,它抛出了一个IOException(读取超时)witch,忽略了它。然后继续


我知道这不是最好的解决办法,但这正是目前行之有效的办法

嗯。让我们假设我决定在超时时完成阅读。我得到了一个IOException,我怎么能确认htis IOException是超时的呢?@rockskall Catch
SocketTimeoutException。
我会尝试一下,但是根据Java文档,SocketTimeoutException是用connect方法抛出的。
read <somne info>
reached empty line?
start getting the points
reached the points total amount?
break the loop
read <somne info>
reached empty line?
while !EOF
    is number?
    read
end
while((line = readLine()) != null){
      //read stuff
}