我有一个SSLSocket池,我需要在借用对象前检查套接字连接是否健全。如何检查Java上的SSLSocket连接是否健全?
isConnected,isInputShutdown和isOutputShutdown是无用的,因为它们不检查双方是否连接,如果我尝试写入或从套接字读取,我可能会得到一个SocketException。
这里是我的测试连接代码:
if(sslSocket.isConnected() &&
!sslSocket.isInputShutdown() &&
!sslSocket.isOutputShutdown()){
valid = true;
}
此代码不能正常工作,如上所述。
那么,检查SSLSocket(或普通Socket)是否健全的最佳方法是什么?
我测试过在连接上发送一个字节并捕获异常,但似乎这不会测试读取操作,并且在稍后阅读时可能会遇到异常。我可能在这方面是错误的,会做更多的测试。 – Isac 2010-08-25 16:55:44
同样的事情,你不能测试你是否可以阅读,直到你阅读。在测试套接字是否打开以及从中读取套接字的时间之间,远程方可能已关闭连接。它在阅读时甚至可能会关闭它。 – Bruno 2010-08-25 16:59:15
请记住,套接字的状态是由对等体部分控制的。因此,您在本地计算机上执行的任何检查都很容易立即失效。 – Darron 2010-08-25 17:00:07