我有以下代码:
public class SenderTask implements Runnable {
private DhtDto dto;
private ObjectOutputStream oos = null;
private Socket socket = null;
public SenderTask(DhtDto dto){
this.dto = dto;
}
@Override
public void run() {
try{
socket = new Socket(InetAddress.getByAddress(new byte[]{10, 0, 2, 2}),dto.sendTo());
oos = new ObjectOutputStream(socket.getOutputStream());
oos.writeObject(dto);
oos.close();
socket.close();
oos.reset();
}catch(IOException e){
Log.e("sender","IOException: ",e);
}
}
}
我在以下行收到StreamCorruptedException:
oos.writeObject(dto);
当我搜索时,我看到答案说我应该在套接字的整个生命周期中只使用一个ObjectOutputStream。但我不明白这究竟意味着什么。有人可以详细说明这里的问题以及解决方法吗?
提前致谢。
答案 0 :(得分:0)
最后,我在同学的帮助下解决了这个问题。我们的想法是在Sockets和ObjectOutputStream的中间使用BufferedOutputStream。我不知道原因。