2014-04-10 44 views
0

我下面的代碼:StreamCorruptedException在Java中

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

最後,我在一位同學的幫助下解決了這個問題。這個想法是在Sockets和ObjectOutputStream的中間使用BufferedOutputStream。儘管我不太清楚原因。

相關問題