gpt4 book ai didi

Java:读取循环是如何逃逸的?

转载 作者:行者123 更新时间:2023-12-01 19:02:10 25 4
gpt4 key购买 nike

在浏览一些有关套接字的教程时,我不断遇到这样的代码:

  while(true){ 
socket.receive(packet);
String message = new String(packet.getData(),0,packet.getLength(), TEXT_ENCODING);
System.out.println(message);
}

问题是:这个循环是怎么剩下的?仅通过 catch,一旦 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();
}
}

但是我不断出现超时异常,尽管读取是正确的。所以我想知道,异常(exception)是否是“预期”的离开方式。虽然我严重怀疑...并且socket.receive(packet)是抛出异常的地方。

最佳答案

无论你相信与否,您都不希望所有循环都终止。

一个典型的例子是 Web 服务器,它有一个简单的循环,用于监听请求、处理请求,然后再次返回等待 - “永远”。这基本上就是您的代码示例。

答案是“这个循环没有留下”,这就是你想要的。

关于Java:读取循环是如何逃逸的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com