android - 如何正确关闭套接字及其InputStream?

标签 android sockets inputstream

假设我有一个已连接的套接字和关联的InputStream。完成此连接后,如何正确关闭这些连接(无泄漏)?

我已经在SO和其他地方搜索了此问题,但是我得到的答案是模棱两可或矛盾的。我是不是该

  • 关闭套接字(仅)?
  • 关闭输入流(仅)?
  • 都关闭吗?
  • 最佳答案

    要清理Socket而不泄漏任何资源,请调用close(),然后丢弃对Socket的所有引用。通常,此建议对所有Java Socket子类(包括ServerSocketSSLSocket)都是有效的。

    正如documentation解释的那样,close()会同时关闭套接字的InputStreamOutputStream,从而无需在这些流上执行单独的close()调用。

    而且,仅靠自己关闭InputStreamOutputStream是不够的。
    Socket基类(old example)的源代码进行检查,可以证明至少在Android平台上确实如此。

    关于android - 如何正确关闭套接字及其InputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59019497/

    相关文章:

    android - 如何在android中更改TextInputLayout的 float 标签位置

    android - 如何清除 Android 上 SingleTop SingleInstance MainActivity 上的堆栈?

    Java网络编程从客户端读取数据

    android - 在 LocalBroadcastManager 注册的 BroacastReceiver 的 onReceive() 在哪个线程运行?

    android - 关闭自定义对话框问题

    c - O_NONBLOCK SOCK_STREAM 限制为 8192

    java - 基于InputStreams的Zip文件

    java - xDocReport - 无法为输入流创建报告

    PHP流套接字不解密数据

    .net - 通过.NET中的套接字发送纯文本