機器から情報を取得する必要があるコードがあります。この機器にはソケット接続があります。基本的にはこれです:
コマンドを送信すると、次のように返されます。
<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
こういう作品。何らかの理由で、ソケットで次に行う読み取り (コマンドを送信し、1 行の応答を期待する) で、このソケットの読み取りからゴミが得られることがあります。たまにだけ。
私はこれをやろうとしました:
read <somne info>
reached empty line?
while !EOF
is number?
read
end
そう。これは私が必要とするすべてを読みました。しかし、最後に到達すると IOException: red timeout が表示されます
読むものが何もないことはわかっているので、どうすればそれを避けることができますか?
申し訳ありませんが、私は実際のコードを持っていませんが、基本的にこれが問題です: このループの最後に読み取りタイムアウトで例外が発生します:
while((line = readLine()) != null){
//read stuff
}