我發現這個API叫Kryonet。那麼,我試圖實現項目頁面中提供的示例。但是,這並不成功。Java Kryonet [類未註冊異常]
Server代碼:
public class KryoTest {
public KryoTest() throws IOException {
Server server = new Server();
server.start();
server.bind(54555, 54777);
server.addListener(new Listener() {
public void received(Connection connection, Object object) {
if (object instanceof SomeRequest) {
SomeRequest request = (SomeRequest) object;
System.out.println(request.text);
SomeResponse response = new SomeResponse();
response.text = "Thanks!";
connection.sendTCP(response);
}
}
});
Kryo kryo = server.getKryo();
kryo.register(SomeRequest.class);
kryo.register(SomeResponse.class);
}
public static void main(String[] args) throws IOException {
new KryoTest();
}}
客戶端代碼:
public class Kryoclient {
public Kryoclient() throws IOException {
Client client = new Client();
client.start();
client.connect(5000,"192.168.1.4", 54555, 54777);
SomeRequest request = new SomeRequest();
request.text = "Here is the request!";
client.sendTCP(request);
Kryo kryo = client.getKryo();
kryo.register(SomeRequest.class);
kryo.register(SomeResponse.class);
}
public static void main(String[] args) throws IOException {
new Kryoclient();
}
}
例外:
run:
00:00 INFO: Connecting: /192.168.1.4:54555/54777
00:00 INFO: [kryonet] Connection 1 connected: /192.168.1.4
Exception in thread "main" java.lang.IllegalArgumentException: Class is not registered: client.SomeRequest
at com.esotericsoftware.kryo.Kryo.getRegisteredClass(Kryo.java:319)
at com.esotericsoftware.kryo.Kryo.writeClass(Kryo.java:374)
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:484)
at com.esotericsoftware.kryonet.TcpConnection.send(TcpConnection.java:196)
at com.esotericsoftware.kryonet.Connection.sendTCP(Connection.java:68)
at client.Kryoclient.<init>(Kryoclient.java:24)
at client.Kryoclient.main(Kryoclient.java:30)
什麼是錯的代碼?
你知道這個庫的緩衝區溢出嗎?在我的Q中https://github.com/EsotericSoftware/kryonet/issues/134#issuecomment-333369190? –