У меня есть довольно простой кусок кода, который висит в Java. Зависание ОЧЕНЬ нечасто. Может быть, порядка раз в 1000 казней. Запуск его в цикле на устройстве, похоже, не воспроизводит проблему.
long timeout = 10000;
long endTime = System.currentTimeMillis() + timeout + 5000;
Socket pingSocket = null;
String host = "host";
String port = "22";
do {
try {
pingSocket = new Socket();
pingSocket.bind(null);
pingSocket.connect(new InetSocketAddress(host, port), 5000);
if (pingSocket.isConnected()) {
pingSocket.close();
return true;
}
pingSocket.close();
}
catch (UnknownHostException e) {
throw e;
}
catch (IOException e) {
// All other errors are subclassed from IOException, and i want
// to ignore till after my spin period.
}
try {
Thread.sleep(SPIN_SLEEP_DELAY);
}
catch (InterruptedException e) {
return false;
}
} while (System.currentTimeMillis() <= endTime);
Поскольку в производстве это случается так редко, трудно определить причину проблемы. В настоящее время я работаю над созданием кода, чтобы в следующем выпуске нашего продукта было больше информации, когда это произойдет, но я подумал, что могу спросить, видел ли кто-нибудь простой зависание bind / connect / isConnected / close? 1004 *
Спасибо!