Der folgende Code sollte eine Ausnahme basierend auf werfen, ob ein Timeout erreicht wurde:SocketTimeoutException nicht
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;
}
Ich habe in jedem möglichen Szenario versucht, und ich kann garantieren, dass das Paket nicht einmal, wie es ausgelöst wird, wird nie auf der anderen Seite empfangen. Irgendeine Idee warum? Jede Hilfe wird sehr geschätzt!
Sinn macht. Vielen Dank. – mjr
Gibt es tatsächlich eine Möglichkeit, sich von einem Socket zu lösen? (Paket) in UDP nach einer bestimmten Zeit zu akzeptieren? – mjr
@mjr ja, ich denke, das ist, was Sie suchen http://stackoverflow.com/questions/10055913/set-timeout-for-socket-receive –