验证是否正在关闭套接字

时间:2013-12-02 10:34:01

标签: java sockets http testing

如何验证我的应用程序是否正在关闭特定的HTTP连接?

关闭逻辑深入到一个复杂的库中,所以它并不明显。

我尝试使用Eclipse调试器并在java.io.Closeable上设置断点,但Eclipse说我不能在接口方法上设置断点。

1 个答案:

答案 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发出测试请求,则表明连接已保持活动状态的消息。但是如果服务器没有做任何这些事情,这是不可能的,所以在这种情况下应该关闭连接。