Kryonet - 如何在序列化期间获取发送者(连接)?
Kryonet - how to get the sender (Connection) during serialization?
我有一个非常非常大的问题。我正在对数据包使用 AES 序列化,但出现了问题。
Kryo 中的序列化程序如下所示:
public class AESSerializer extends Serializer {
private final Serializer serializer;
public AESSerializer (Serializer serializer) {
this.serializer = serializer;
}
public void write (Kryo kryo, Output output, Object object) {
// USE AES KEY TO ENCRYPT
// WRITE OBJECT
}
public Object read (Kryo kryo, Input input, Class type) {
// USE AES KEY TO DECRYPT
// READ OBJECT
}
}
这里的问题是每个用户都必须拥有自己的 SecretAESKey。我找不到任何方法从序列化器获取连接列表,而且当我阅读 Kryonet 的代码时——它们不会将它传递到任何地方。我需要获取写入对象的连接以获取它的 AES 密钥。
序列化器构造函数不是一个选项,因为序列化器是每个应用程序一个,而不是每个用户一个。
你们知道如何处理这样的事情吗?
Kryo 内置了这段代码:
public synchronized void write (Connection connection, ByteBuffer buffer, Object object) {
output.setBuffer(buffer);
kryo.getContext().put("connection", connection);
kryo.writeClassAndObject(output, object);
output.flush();
}
public synchronized Object read (Connection connection, ByteBuffer buffer) {
input.setBuffer(buffer);
kryo.getContext().put("connection", connection);
return kryo.readClassAndObject(input);
}
在您的序列化程序调用中:
Connection connection = (Connection) kryo.getContext().get("connection");
你有联系。
我有一个非常非常大的问题。我正在对数据包使用 AES 序列化,但出现了问题。
Kryo 中的序列化程序如下所示:
public class AESSerializer extends Serializer {
private final Serializer serializer;
public AESSerializer (Serializer serializer) {
this.serializer = serializer;
}
public void write (Kryo kryo, Output output, Object object) {
// USE AES KEY TO ENCRYPT
// WRITE OBJECT
}
public Object read (Kryo kryo, Input input, Class type) {
// USE AES KEY TO DECRYPT
// READ OBJECT
}
}
这里的问题是每个用户都必须拥有自己的 SecretAESKey。我找不到任何方法从序列化器获取连接列表,而且当我阅读 Kryonet 的代码时——它们不会将它传递到任何地方。我需要获取写入对象的连接以获取它的 AES 密钥。
序列化器构造函数不是一个选项,因为序列化器是每个应用程序一个,而不是每个用户一个。
你们知道如何处理这样的事情吗?
Kryo 内置了这段代码:
public synchronized void write (Connection connection, ByteBuffer buffer, Object object) {
output.setBuffer(buffer);
kryo.getContext().put("connection", connection);
kryo.writeClassAndObject(output, object);
output.flush();
}
public synchronized Object read (Connection connection, ByteBuffer buffer) {
input.setBuffer(buffer);
kryo.getContext().put("connection", connection);
return kryo.readClassAndObject(input);
}
在您的序列化程序调用中:
Connection connection = (Connection) kryo.getContext().get("connection");
你有联系。