I found this API called Kryonet. Well, i tried to implement the example provided in the project page. However, it wasn't successful.
Server code:
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();
}}
Client Code:
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();
}
}
Exception:
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)
What is wrong with this code?
I've never heard of Kryonet before now, but I'd assume you'll need to move your kryo.register(...)
lines to before the client or the server first tries to connect or accept a connection, respectively.