Следующий код должен генерировать исключение в зависимости от того, был ли достигнут тайм-аут:
public boolean isAlive(int workerNum) throws Exception
{
System.out.println("Checking worker #" + workerNum + " from " +
getWorkerAddress(workerNum)
+ " at port " + getWorkerPort(workerNum));
DatagramPacket packet = new DatagramPacket("__ping__".getBytes(), "__ping__".length(),
getWorkerAddress(workerNum), getWorkerPort(workerNum));
socket.setSoTimeout(10000);
try {
System.out.println("Checking worker #" + workerNum);
socket.send(packet);
} catch (SocketTimeoutException e) {
e.printStackTrace();
return false;
}
return true;
}
Я пробовал во всех возможных сценариях, и я могу гарантировать, что пакет никогда даже не будет выброшен, поскольку он никогда не будет получен на другой стороне. Есть идеи, почему? Любая помощь приветствуется!