如何验证我的应用程序是否正在关闭特定的HTTP连接?
关闭逻辑深入到一个复杂的库中,所以它并不明显。
我尝试使用Eclipse调试器并在java.io.Closeable
上设置断点,但Eclipse说我不能在接口方法上设置断点。
答案 0 :(得分:1)
在Linux上,在命令行运行sudo ss -r -p | grep java
以检查套接字是否仍处于打开状态。如果未安装ss
,您可以改用netstat
。 (相当于grep
的Windows是find
,但我不知道在Windows上使用的确切命令。)
如果您准备仅通过目标服务器或端口进行grep,那么在这种情况下您不需要sudo
或-p
选项。
警告:请注意,对于HTTP,如果服务器发送Content-Length
标头或带implied content length的响应类型,或使用Transfer-Encoding: chunked
,即使您在close()
上调用InputStream
,支持连接保持活动状态的HTTP客户端库也可以保持实际套接字打开(此处的另一个线索是curl
/ libcurl
将打印如果您使用curl
发出测试请求,则表明连接已保持活动状态的消息。但是如果服务器没有做任何这些事情,这是不可能的,所以在这种情况下应该关闭连接。