通过一些关于套接字的教程,我不断遇到这样的代码:
while(true){
socket.receive(packet);
String message = new String(packet.getData(),0,packet.getLength(), TEXT_ENCODING);
System.out.println(message);
}
问题是:这个循环是怎么留下的?仅通过捕获,一旦接收()完成?
更准确地说,这是我所做的:
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();
}
}
但是我一直想出一个超时异常,尽管读取是正确的。所以我想知道,如果例外是“预期”的离开方式。尽管我严重怀疑...并且 socket.receive(packet) 是抛出异常的地方。