Java中的StreamCorruptedException

时间:2014-04-10 02:58:21

标签: java android exception

我有以下代码:

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。但我不明白这究竟意味着什么。有人可以详细说明这里的问题以及解决方法吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

最后,我在同学的帮助下解决了这个问题。我们的想法是在Sockets和ObjectOutputStream的中间使用BufferedOutputStream。我不知道原因。