ソケットに関するいくつかのチュートリアルを行っていると、次のようなコードに出くわします。
while(true){
socket.receive(packet);
String message = new String(packet.getData(),0,packet.getLength(), TEXT_ENCODING);
System.out.println(message);
}
質問: このループはどのように残されていますか? receive() が完了したら、キャッチを介してのみ?
より正確に言うと、私がやったことは次のとおりです。
while(true) {
try {
socket.receive(answer);
resultString = new String(answer.getData(), 0, answer.getLength(), "ASCII");
if (isMyIdentifier(resultString)) {
gatewayIP = answer.getAddress().getHostAddress();
return true;
} else {
return false;
}
}
catch (SocketTimeoutException e) {
throw new GatewayNotReachableException();
}
}
しかし、読み取りは正しいのですが、timeoutexception が発生し続けます。だから私は、例外が「予想される」出発方法であるかどうか疑問に思っていました。私はそれを真剣に疑っていますが...そして、socket.receive(packet)は、例外がスローされる場所です。