этот вопрос уже задают для Java, однако я сталкиваюсь со странной проблемой, когда пытаюсь отправить объект по сети. Класс объекта следующий:
class Packet(override val type: PacketType) : Serializable, Packet {
override var payload: Any? = null;
companion object {
private const val serialVersionUID = 578515438738407941L
}
}
Как видите, он уже реализует интерфейс Serializable и содержит serialVersionUID, который, как мне сказали мои профессора, необходим.
I я пытаюсь отправить этот объект по сети с помощью этой функции
fun sendToServer(payload: Packet, sender: Client, receiver: Server): Unit {
try {
val requestSocket = Socket(InetAddress.getByName(receiver.ip), receiver.port)
val out: ObjectOutputStream
out = ObjectOutputStream(requestSocket.getOutputStream())
println("Sending $payload to $receiver.")
out.writeUnshared(payload)
out.flush()
} catch (err: Exception) {
System.err.println("$sender Tried to connect to -> $receiver But an error occurred.")
err.printStackTrace()
}
}
Ошибка возникает в строке 22, поэтому, похоже, проблема writeUnshared
. Я попытался WriteObject
, но это тоже не сработало. Я хочу написать объект, а не просто String
или Int
.
Когда я запускаю эту функцию, я получаю ошибку "NotSerializableException". Я так смущен этим, он работал над моим старым проектом. Если вам нужно больше объяснений, , пожалуйста, , прокомментируйте ниже, и я буду рад обновить этот вопрос.