err: java.io.IOException: closed解决方法

3 篇文章 0 订阅
1 篇文章 0 订阅

在安卓开发的路上好多坑,这不今天又忙活了大半天,原因是报了这么个错:

err: java.io.IOException: closed
        at okio.RealBufferedSource$1.read(RealBufferedSource.java:436)
        at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)
        at android.graphics.BitmapFactory.decodeStreamInternal(BitmapFactory.java:742)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:718)
        at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:756)

这是在使用OKHttpClient下载图片的时候发生的,

出现的IO异常是: 已经关闭, 搞了半天不知道怎么解决

后来才知道原来 response.body().string() 只能用一次, 而我下面代码里用了两次, 第一次用完的时候输入流自动被回收了,注释了下面的代码,就没事儿了, 记住 response.body().string()只能用一次.

 

 

记录一下, 下次不会再采坑.

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,这是一个很有趣的项目!首先,你需要学习如何使用Java Socket编程来实现客户端和服务器端之间的通信。以下是一个简单的代码示例,可以让你了解如何建立Socket连接和发送/接收消息。 服务器端代码: ```java import java.io.*; import java.net.*; public class Server { public static void main(String[] args) { try (ServerSocket serverSocket = new ServerSocket(8000)) { System.out.println("Server started."); while (true) { Socket socket = serverSocket.accept(); System.out.println("Client connected: " + socket); // Start a new thread to handle the client Thread thread = new Thread(new ClientHandler(socket)); thread.start(); } } catch (IOException e) { System.err.println("Server error: " + e.getMessage()); } } } class ClientHandler implements Runnable { private Socket socket; private BufferedReader in; private PrintWriter out; public ClientHandler(Socket socket) { this.socket = socket; } @Override public void run() { try { in = new BufferedReader(new InputStreamReader(socket.getInputStream())); out = new PrintWriter(socket.getOutputStream(), true); String message; while ((message = in.readLine()) != null) { System.out.println("Message received: " + message); // Send the message back to the client out.println(message); } } catch (IOException e) { System.err.println("Client error: " + e.getMessage()); } finally { try { socket.close(); } catch (IOException e) { System.err.println("Socket not closed: " + e.getMessage()); } } } } ``` 客户端代码: ```java import java.io.*; import java.net.*; public class Client { public static void main(String[] args) { try (Socket socket = new Socket("localhost", 8000)) { System.out.println("Connected to server."); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out = new PrintWriter(socket.getOutputStream(), true); // Read from the console and send to the server BufferedReader console = new BufferedReader(new InputStreamReader(System.in)); String message; while ((message = console.readLine()) != null) { out.println(message); // Receive the message from the server and print it to the console String response = in.readLine(); System.out.println("Server response: " + response); } } catch (IOException e) { System.err.println("Client error: " + e.getMessage()); } } } ``` 以上代码仅作为示例,可以帮助你了解如何使用Java Socket编程来实现基本的文本通信。如果你要实现文件传输和私聊等功能,需要在这个基础上进行进一步的开发和改进。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值