gpt4 book ai didi

java - SocketTimeoutException 指示无法访问

转载 作者:太空宇宙 更新时间:2023-11-04 13:19:24 27 4
gpt4 key购买 nike

以下是我尝试编写的 Java 应用程序的一小部分:

Socket socket = new Socket(hostname, portnumber);
DataInputStream socketInput = new DataInputStream(socket.getInputStream());
try{
socket.setSoTimeout(10000);
try{
byte[] msgHeader = new byte[4];
if (socketInput.read(msgHeader) != -1)
{
// process message
}
}
catch (IOException e)
{
// process exception
}
catch (SocketTimeoutException ste)
{
// process exception
}
}
catch (SocketException se)
{
// process exception
}

我收到一条错误,指出无法访问 catch(SocketTimeoutException)。我想建立一个套接字超时以防止套接字 read() 永远阻塞,如果发生 SocketTimeoutException,我的应用程序将尝试与下一个可用服务器建立套接字连接,并尝试相同的 read() 操作。

非常感谢您提供的任何帮助,因为我尝试使用不同的 IO 类但没有成功。

最佳答案

由于SocketTimeoutExceptionIOException的子类,因此控件永远不会到达正在捕获SocketTimeoutException的catch block 。异常将始终被 IOException catch block 捕获更改这些 catch block 的位置:

 catch (SocketTimeoutException e)
{
// process exception
}
catch (IOException ste)
{
// process exception
}

关于java - SocketTimeoutException 指示无法访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33244253/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com