Erstellen einer effizienten Methode zum Senden von Ganzzahlen über ein Netzwerk. TCP

Wie kann ich Integer-Werte in Byte-Arrays konvertieren und sie dann über einen Byte-Stream an das Client-Programm senden, das das Byte-Array zurück in eine Ganzzahl konvertiert?

Mein Programm ist ein Pingpong-Spiel. Nach der Ausführung wird ein Server erstellt, mit dem ein Client über einen Objektstrom eine Verbindung über das Internet herstelltjetzt sofort. Alles funktioniert gut, aber es scheint nicht sehr effizient zu sein. Damit meine ich, dass der Ball hin und her stottert, während er versucht, über den synchron zu bleibenUpdate-Schleife. Ich habe es vielleicht lose programmiert, aber es war das Beste, was ich mir einfallen lassen konnte. Ich hoffe, jemand, der viel mehr darüber weiß, wie so etwas funktioniert, kann mir helfen, einige Dinge zu klären.

Meine Frage richtig gestellt. Ich muss einen besseren Weg finden, um die Ballpositionen und die Spielerpositionen effizienter über das Internet zu senden. Momentan dauert es zu lange. Obwohl ich es falsch aktualisieren könnte.

Die Art und Weise, wie die Streams aufgebaut sind:

    oostream = new ObjectOutputStream(new BufferedOutputStream(socket.getOutputStream()));
    oostream.flush();
    oistream = new ObjectInputStream(new BufferedInputStream(socket.getInputStream()));

Dies ist die Update-Schleife von Spieler 2:

            IntData id = new IntData();

            while (running) {

                id.ballx = ballx;
                id.bally = bally;
                id.player2Y = player2Y;
                oostream.writeObject(id);
                oostream.flush();

                Thread.sleep(updaterate);

                id = (IntData) oistream.readObject();
                player1Y = id.player1Y;
                    ballx = id.ballx;
                bally = id.bally;

            }

Spieler 1 ist der Server-Host. Dies ist die Update-Schleife von Spieler 1:

            IntData id = new IntData();

            while (running) {

                id = (IntData) oistream.readObject();
                player2Y = id.player2Y;
                ballx = id.ballx;
                bally = id.bally;

                Thread.sleep(updaterate);

                id.ballx = ballx;
                id.bally = bally;
                id.player1Y = player1Y;
                oostream.writeObject(id);
                oostream.flush();

            }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage