Pregunta

En primer lugar, sé que las coordenadas son probablemente la terminología incorrecta. Asumiría que simplemente estaría pasando las variables x e y, pero las coordenadas lo describen mejor, creo.

Ahora necesito tener un servidor al que puedan acceder 2 clientes, es un juego de carreras y requiere que cada cliente pueda maniobrar un auto de carreras simultáneamente, cada uno con un esquema de control diferente, pero eso no está ni aquí ni allá.

Esperaba que alguien pudiera ayudarme a la hora de enviar las posiciones x e y de un auto de carreras al servidor y que el servidor las enviara al siguiente jugador y viceversa para permitir que ambos autos de carrera se muevan en el mismo tiempo en cada ventana de clientes. Hasta ahora solo he hecho cosas simples del servidor, como el servidor Knock Knock en el sitio web de Sun, y un servidor echo simple que repite una cadena que envío al servidor.

Cuando intenté usar int en lugar de string, recibí un error que decía que el int que quería pasar era dinámico (obviamente cambia con cada movimiento) y no se puede pasar como estático (usando readInt y writeInt).

Por lo tanto, cualquier ayuda sobre cómo crear el movimiento deseado en ambas ventanas del cliente a través del servidor sería apreciada.

Gracias

¿Fue útil?

Solución

Una solución simple es usar ObjectOutputStream con objetos serializables :

class Coordinates implements Serializable{...}

ObjectOutputStream out = new ObjectOutputStream(...);
out.writeObject(new Coordinates(...));

Otros consejos

Craig, estás cerca. Dinámico / estático es un malentendido, esto no tiene nada que ver con su juego de carreras o cambio de valores. Es solo que no puede deserializar los campos, que se declaran estáticos (o transitorios), como se dice en el javadoc para ObjectInputStream:

  

Los campos declarados como transitorios o estáticos son ignorados por el proceso de deserialización.

La solución es (con suerte) simple: elimine el modificador static de sus enteros x / y, eso debería resolver el problema. por cierto, si su cadena hubiera sido estática, habría fallado exactamente de la misma manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top