繁体   English   中英

套接字总是最后超时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM