Sockets Javafx,确定从套接字读取的特定超时
在下面的代码中,在线程(不是UI线程)中,我试图从套接字读取数据。但在每种状态下,如果超过3秒,我都想中断while循环。我该怎么做 您可以在代码中找到一些注释Sockets Javafx,确定从套接字读取的特定超时,sockets,javafx,timeout,Sockets,Javafx,Timeout,在下面的代码中,在线程(不是UI线程)中,我试图从套接字读取数据。但在每种状态下,如果超过3秒,我都想中断while循环。我该怎么做 您可以在代码中找到一些注释 }调用套接字(在尝试读取之前)。然后,readLine将抛出一个SocketTimeoutException,如果在超时过期之前没有读取数据。您可以在循环之外捕获该异常 调用套接字(在尝试读取之前)。然后,readLine将抛出一个SocketTimeoutException,如果在超时过期之前没有读取数据。您可以在循环之外捕获该异常
}调用套接字(在尝试读取之前)。然后,
readLine
将抛出一个SocketTimeoutException
,如果在超时过期之前没有读取数据。您可以在循环之外捕获该异常 调用套接字(在尝试读取之前)。然后,readLine
将抛出一个SocketTimeoutException
,如果在超时过期之前没有读取数据。您可以在循环之外捕获该异常 您的意思是,如果在超时过期之前没有读取任何数据,那么在每个readline()上它都会抛出SocketTimeoutException?非常感谢。假设Java中没有此异常。你知道做这项工作的另一种方法吗?你的意思是在每个readline()上,如果在超时过期之前没有读取数据,它会抛出一个SocketTimeoutException?非常感谢。假设Java中没有此异常。你知道做这项工作的另一种方法吗?
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;
}