2014-03-12 62 views
1

我正嘗試使用套接字將客戶端連接到服務器。java.io.NotSerializableException :: ObjectOutputStream:writeObject方法

Server代碼:

ServerSocket server = new ServerSocket(6780); 
Socket clientSocket = server.accept(); 
ObjectInputStream fromClient= new ObjectInputStream(clientSocket.getInputStream()); 
ObjectOutputStream toClient = new ObjectOutputStream(clientSocket.getOutputStream()); 

客戶端代碼:

Socket nodeSocket = new Socket(ServerIP, 6780); 
ObjectInputStream fromServer = new ObjectInputStream(nodeSocket.getInputStream()); 
ObjectOutputStream toServer = new ObjectOutputStream(nodeSocket.getOutputStream()); 
toServer.writeObject(this); 

當客戶端連接,服務器偵聽並接受客戶端連接。 但是,當我嘗試寫我的類對象到服務器,「toServer.writeObject(this);」 它拋出

java.io.NotSerializableException: Peer 
at java.io.ObjectOutputStream.writeObject0(Unknown Source) 
at java.io.ObjectOutputStream.writeObject(Unknown Source) 
at Peer.requestEntryNode(Peer.java:47) 
at Peer.main(Peer.java:87) 

同行是我的類名。

我試圖找出這個異常的原因,它說,需要寫入的對象必須是可序列化的。 我也嘗試從Peer類實現Serializable接口。但是這沒有幫助。

任何人都可以建議嗎?

+2

請在這裏發佈你的同伴班的相關部分。當類定義中包含不可序列化的成員時,NotSerializableException可能會上升。 – user35443

回答

4

確保您Peer類和它的依賴項實現java.io.Serializable接口:

import java.io.Serializable; 

public class Peer implements Serializable { 
    ... 
} 
0

感謝所有的答覆。

我找到了解決方案。 我讓我的Peer類實現Serializable以及那些從Peer類引用的類。

ObjectOutputStream和ObjectInputStream未被序列化。所以我不能讓它們成爲類變量。我向每種方法聲明它們是本地的。

現在正常工作。

相關問題