gpt4 book ai didi

java - 套接字因意外关闭而关闭

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:49 25 4
gpt4 key购买 nike

我目前正在使用 Java 中的套接字。我创建了一个将连接到 ServerSocket 的监听器。这工作得很好。但是,如果我的应用程序可能遇到意外关闭,则套接字将无法正确关闭。下一次运行时,这将在 socket =serversocket.accept();

上抛出 SocketException:套接字已关闭

但是,通过使用 serversocket.isBound() 进行测试,我发现 serversocket 实际上已绑定(bind),因此并未关闭。有什么方法可以让我确定是否可以接受连接,如果不能,则清除套接字并在此之后接受?

提前致谢。

最佳答案

However, if my application may encounter unexpected closure, the sockets won't be closed properly. Upon the next run, this will throw a SocketException: socket closed on socket = serversocket.accept();

你已经从后到前了。 “套接字已关闭”意味着套接字关闭,而不是没有关闭。

However, by testing with serversocket.isBound() I've discovered that the serversocket is in fact bound and therefor not closed.

错了。 isBound() 告诉您是否曾经显式或隐式调用过bind()。关闭套接字后,它不会更改返回的内容。如果您想知道套接字是否仍然打开,请尝试 isOpen() 或 isClosed(),无论是哪个。

您需要相信异常告诉您的内容。您关闭了服务器套接字,因此现在您无法接受它。

Is there any way for me to determine whether it is possible for me to accept the connection and if not, to clear the socket and accept after this?

更重要的是修复套接字首先关闭的错误。

关于java - 套接字因意外关闭而关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14159496/

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