java.io.NotSerializableException :: ObjectOutputStream: метод writeObject

1

Я пытаюсь подключить клиента к серверу с помощью сокетов.

Код сервера:

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 из класса Peer. Но это не помогает.

Может ли кто-нибудь предложить?

Теги:
sockets
serializable

2 ответа

4
Лучший ответ

Убедитесь, что ваш класс Peer и его зависимости реализуют интерфейс java.io.Serializable:

import java.io.Serializable;

public class Peer implements Serializable {
  ...
}
0

Спасибо всем за ответ.

Я нашел решение. Я сделал класс Peer для реализации Serializable и тех классов, на которые ссылались классы Peer.

ObjectOutputStream и ObjectInputStream не сериализованы. Поэтому я не могу сделать их переменными класса. Я объявлял их локальными для каждого метода.

Сейчас работает отлично.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню