所以我正在使用 Netty,并试图让一个简单的客户端通过 TCP 连接到服务器,但遇到了一个非常奇怪、不寻常的问题。我正在尝试连接,每当我这样做时它就会连接,然后客户端就会断开连接。我调试了客户端并遇到了这个奇怪的问题,您可以在图片中看到。在 Netty 包含的 ClientBootstrap 类中,如果上面的 try/catch 中 success 设置为 true,它将关闭 channel 。正如您在调试变量中看到的,变量 success 设置为 true,但它会通过上面的 if 语句,仅当 success 为 false 时才会继续。这有什么意义呢?我已经调试了它,成功在 if 语句上方设置为 true,然后转到后面的 if 语句。如果有人能解释一下那就太好了。
最佳答案
In the ClientBootstrap class that Netty includes it closes the channel if success is set to true in the try/catch above it.
不,没有。这是因为否定 (!
)。如果旁边的表达式为 false
, boolean 否定将返回 true
,反之亦然。
您声明:
if(!success)
现在,仅当您的程序到达 try
的最后一行时,success
才会设置为 true
。如果不是,则意味着出现了问题 - 可能是 channel 出现了问题 - 现在您将关闭该有问题的 channel 。所以它的作用与你想要的相反。
关于java - 为什么这个 boolean 比较不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30472015/