0
以下のコードでは、スレッド(UIスレッドではない)でソケットからデータを読み取ろうとしています。しかし、各状態では、3秒以上かかるとwhileループを中断したい。どうやってやるの?Javafx、ソケットから読み取るための特定のタイムアウトを確認する
あなたは(あなたがそれからの読み取りを試みる前に)ソケットにコード
System.out.println(loginMsg);//send login message to server
while ((fromServer = sInput.readLine()) != null) {
switch (state) {
case 0:
if (fromServer.equals("*2*1#")) //Login was successful
{
sOutput.println(msg); // send another message to server to enter some data into database
state = 1;
} else if (fromServer.equals("*2*0#")) //Login was not successful
{
motor1CommandString = "access denied";
state = 3;
}
break;
case 1:
if (fromServer.equals("*6*1#"))
{
motor1CommandString = "message sent";
state = 2;
} else if ((fromServer.equals("*6*2#")) /*device is not online */ || (fromServer.equals("*6*0#"))) /*for some reason device is not reachable */{
motor1CommandString = "No Connection to device";
state = 3;
}
break;
case 2:
if (fromServer.equals(ACK)) //device has received the message and replied back
state = 3;
break;
}
if (state == 3) {
break;
}
}
タイムアウトが切れる前にデータが読み込まれないと、readline()はすべてSocketTimeoutExceptionをスローしますか? –
はい、正しいです。 –
ありがとうございます。 Javaでこの例外がないとします。あなたは仕事をする別の方法を知っていますか? –