Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sockets Javafx,确定从套接字读取的特定超时_Sockets_Javafx_Timeout - Fatal编程技术网

Sockets Javafx,确定从套接字读取的特定超时

Sockets Javafx,确定从套接字读取的特定超时,sockets,javafx,timeout,Sockets,Javafx,Timeout,在下面的代码中,在线程(不是UI线程)中,我试图从套接字读取数据。但在每种状态下,如果超过3秒,我都想中断while循环。我该怎么做 您可以在代码中找到一些注释 }调用套接字(在尝试读取之前)。然后,readLine将抛出一个SocketTimeoutException,如果在超时过期之前没有读取数据。您可以在循环之外捕获该异常 调用套接字(在尝试读取之前)。然后,readLine将抛出一个SocketTimeoutException,如果在超时过期之前没有读取数据。您可以在循环之外捕获该异常

在下面的代码中,在线程(不是UI线程)中,我试图从套接字读取数据。但在每种状态下,如果超过3秒,我都想中断while循环。我该怎么做

您可以在代码中找到一些注释


}

调用套接字(在尝试读取之前)。然后,
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;
}