タイムアウトに達したかどうかに基づいて例外をスローする必要があり、次のコード:私はすべての可能なシナリオで試してみたと私は、パケットがさえそれとしてスローされることはありませんことを保証することができますてSocketTimeoutExceptionがスローされていない
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;
}
もう一方の側で決して受け取られません。どんな考え?どんな助けでも大歓迎です!
意味があります。ありがとう。 – mjr
実際には、一定時間後にsocket.recieve(パケット)から抜け出す方法がありますか? – mjr
@mjrはい、私は、これはあなたがhttp://stackoverflow.com/questions/10055913/set-timeout-for-socket-receive探しているものだと思います –