[英]Socket always timing out in the end
我有一个代码,需要从设备中捕获一些信息。 本设备具有插座连接。 基本上是这样的:
我发送一个命令返回此命令:
<some info>
<some info>
<some info>
<some info>
1.551
1.689
... (A bunch of those numbers)
1.258
<more info>
我需要一部分,但对我来说是垃圾。
首先尝试是:
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
所以。 这读了我需要的一切。 但是当到达终点时我得到了IOException:红色超时
我知道没有什么可读书的了,那么我该如何避免呢?
抱歉,我没有实际的代码,但是基本上这是问题所在:在此循环的最后获取读取超时异常:
while((line = readLine()) != null){
//read stuff
}
如果没有可供读取的内容,则对等方应该已关闭连接。 然后,您将得到空值,然后可以结束结账。 如果对等方没有这样做,并且超时时间足够长,您可以确信没有更多数据,那么超时就是您的证据,您既不能也不想避免它。
我找不到这个问题的简单解决方案。
我所做的是在读取块中插入try / catch块。 所以,当我读完这些要点时,我将转到try / catch块,该块读取直到EOF为止。 由于没有EOF,因此它会抛出一个IOExcpetion(读取超时),但我却忽略了它。 继续吧
我知道这不是最好的解决方案,但是这是目前可行的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.