如果服务器不可用,如何防止应用冻结?

Nik*_*lin 3 java sockets networking

InetAddress serverAddr = InetAddress.getByName(serverAddress);
String hostname = serverAddr.getCanonicalHostName();
Socket socket = new Socket(serverAddr, portNumber);
// Freezes before this line if the server is unavailable
socket.setSoTimeout(3000);
Run Code Online (Sandbox Code Playgroud)

有谁知道如何实施服务器可用性检查或防止冻结?

phi*_*hag 6

通过使用双参数构造函数,您可以告诉Java立即连接.您正在寻找的是什么

Socket socket = new Socket();
// Configure socket here
socket.connect(new InetSocketAddress(serverAddr, portNumber), 3000);
if (! socket.isConnected()) {
    // Error handling
} else {
    // Use socket
}
Run Code Online (Sandbox Code Playgroud)

尽管如此,这仍将阻止3s.如果要防止这种情况,请使用线程进行连接.