Juego de Android con servidor / cliente que no funciona con kryonet

He estado tratando durante días para averiguar lo que está mal, cambiar cosas, etc, ha sido inútil.

Obtenga el siguiente error en android studio, al intentar depurar el lado del cliente con mi dispositivo Samsung:

com.esotericsoftware.kryonet.KryoNetException: Incorrect number of bytes (1 remaining) used to deserialize object: null at com.esotericsoftware.kryonet.TcpConnection.readObject(TcpConnection.java:146) at com.esotericsoftware.kryonet.Client.update(Client.java:255) at com.esotericsoftware.kryonet.Client.run(Client.java:338) at java.lang.Thread.run(Thread.java:856) 

Creo que utiliza la misma versión java, y registro la clase exactamente igual. Lado del cliente:

  Client client = new Client(); Kryo kryo = client.getKryo(); kryo.register(SomeRequest.class); kryo.register(SomeResponse.class); client.start(); try{ client.connect(5000, "10.0.0.4", 31055, 32055); }catch (IOException e) { throw new GdxRuntimeException(e); } SomeRequest request = new SomeRequest(); request.text = "Here is the request"; client.sendTCP(request); client.addListener(new Listener() { public void received (Connection connection, Object object) { if (object instanceof SomeResponse) { SomeResponse response = (SomeResponse)object; System.out.println(response.text); } } }); 

Lado del servidor:

 Server server = new Server(); Kryo kryo = server.getKryo(); kryo.register(SomeRequest.class); kryo.register(SomeResponse.class); server.start(); System.out.println("server started"); server.bind(31055, 32055); server.addListener(new Listener(){ public void connected(Connection connection){ System.out.println("connect"); } 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); } } }); } 

Clases

 class SomeRequest{ public String text; } class SomeResponse { public String text; } 

Como se puede ver su código muy básico, pero para conectar es una pesadilla. ¡¡Por favor ayuda!! Estoy creando el lado del cliente en el estudio de android, y el servidor que estoy creando en eclipse. ¿Podría esto ser una razón para los problemas? Es la única razón lógica que he podido concebir. ¿Cómo puedo resolver eso?

Tuve esto también y podría haber sido causada por tres cosas.

  1. El servidor utiliza una versión / compilación diferente de KryoNet.
  2. Estás compilando con una versión de Java diferente.
  3. Está utilizando dos IDE diferentes para crear el servidor y el cliente.

En realidad, había construir mi servidor con Eclipse ya que no era consciente de que podía crear aplicaciones Java con Android Studio donde estaba construyendo mi aplicación de cliente con. Esto simultáneamente causó una diferencia de versión ya que estaba usando Gradle para que el cliente incluyera KryoNet e importara manualmente la versión más cercana que pudiera encontrar en Eclipse.

Conseguí ayuda en el canal de IRC de LibGDX, donde los desarrolladores suelen pasar el rato. No pensaron que la diferencia de versión sería un problema (pero podría). Dijeron que cada vez que construyo un cliente y un servidor deberían usar el mismo sistema de compilación. Este obvio aborda muchos errores imprevistos.

El momento en que tengo un proyecto básico de Java en ejecución en el estudio de Android copié el código incluido la dependencia de KryoNet exactamente igual que el cliente en Gradle todo funcionó como se esperaba. Además de eso me encanta Android Studio y estoy muy feliz de usarlo para cualquier proyecto de Java ahora.

  • ¿Cómo puedo añadir Selendroid a Android Studio para rascar web?
  • Error al finalizar la ejecución de Gradle (nuevo proyecto) - java home different
  • Cómo excluir las clases Dagger2 de la cobertura de la prueba
  • Android Studio publica una biblioteca local
  • Android Studio 1.0.0 - Error al encontrar butterknife: 6.0.0
  • Contexto de lint.xml y perfil de inspección
  • Registrar mensajes en android studio junit test
  • ¿Cómo puedo determinar la versión de los servicios de Google Play?
  • NoClassDefFoundError al usar Dagger 2 después de cambiar a Android Studio 2.0
  • Android Studio - ProGuard IOException Duplicate Zip Entry
  • Cómo aumentar el nivel de volumen de micrófono en Android PJSIP?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.