Orden de red corta (Java)

Necesito enviar un pedido de red corto para un servidor de juegos que estoy escribiendo usando Java. Leí sobre el pedido de red, pero no pude encontrar ningún detalle sobre un corto que se envía antes de los datos. ¿Podría alguien explicarme qué es y cómo enviar uno a un cliente con Java?

Respuesta 1

Los búferes de bytes Java NIO tienen soporte para cambiar el orden de bytes. El orden de bytes de red es Big Endian, por lo tanto.

// Allocate a big endian byte buffer
ByteBuffer bb = ByteBuffer.allocate(4096);
bb.order(ByteOrder.BIG_ENDIAN);
bb.putShort(12345);

// Write the buffer to an NIO channel
bb.flip();
channel.write(bb);

El orden de bytes es el orden en que se almacenan los bytes para valores numéricos que son mayores que un solo byte. Hay 2 sabores Big Endian (byte más significativo primero) y Little Endian (byte menos significativo primero).

Respuesta: 2

En java, un int corto es una cantidad de 2 bytes. El orden de bytes de red envía primero el byte de orden superior, seguido del siguiente byte de orden más alto y así sucesivamente, con el byte de orden inferior enviado al final. Si tienes un OutputStream o, y un short i, entonces

o.write((i >> 8) & 0xff);
o.write(i & 0xff);

envíe el corto en orden de bytes de red. Recomiendo el uso de una DataOutputStreamque tiene un método writeShort()(y writeInt, writeLong, etc.) que escribe automáticamente en orden de bytes de red.

Respuesta: 3

Esta pregunta es doble, pero con suerte no debería ser irrazonablemente larga de responder, a pesar de su propia extensión. Sin embargo, siéntase libre de responder solo una parte, ¡y lo siento por hacerlo tan exhaustivo! Cuales ...

He creado una GUI usando Swing of Java. Ahora tengo que configurar una imagen sample.jpeg como fondo del marco en el que he colocado mis componentes. ¿Cómo hacer eso?

Es el bloque sincronizado en System.out.println (número); necesita el siguiente código? import java.util.concurrent.CountDownLatch; public class Main {private static final Object LOCK = new Object (); ...

I have been recently running into an issue in which my web application will not start properly and the stack trace doesn't indicate exactly what happened. I have been able to isolate it to an event ...