我目前正在使用Java中的套接字。
我创建了一个连接到ServerSocket
的侦听器。这完全没问题。但是,如果我的应用程序可能会遇到意外关闭,则套接字将无法正常关闭。下次运行时,这将在SocketException: socket closed
socket = serversocket.accept();
然而,通过使用serversocket.isBound()
进行测试,我发现serversocket
实际上是绑定的,因此没有关闭。有没有办法让我确定是否可以接受连接,如果没有,清除套接字并在此之后接受?
提前致谢。
答案 0 :(得分:1)
但是,如果我的应用程序可能遇到意外关闭,则套接字将无法正常关闭。在下次运行时,这将抛出一个SocketException:套接字在socket = serversocket.accept();
上关闭
你已经回到了前面。 '套接字关闭'表示套接字 已关闭,而不是它已关闭。
但是,通过使用serversocket.isBound()进行测试,我发现serversocket实际上是绑定的,因此没有关闭。
错误。 isBound()告诉您是否曾显式或隐式调用bind()。关闭套接字后,它不会更改它返回的内容。如果你想知道套接字是否仍然打开,请尝试使用isOpen()或isClosed(),无论它们是什么。
您需要相信异常告诉您的内容。您已关闭服务器套接字,因此现在无法接受它。
我有什么方法可以确定我是否可以接受连接,如果没有,请清除套接字并在此之后接受?
更重要的是要解决套接字首先关闭的错误。