Как вы отправляете int [] между сервером и клиентом на Java?

#java

#java

Вопрос:

Я пытался найти способ отправить int [] с сервера клиенту. У меня есть базовая многопользовательская игра, которая работает по локальной сети. В настоящее время нет ограничений для игроков, кроме тех, которые налагаются самой Java. У каждого игрока есть квадрат, которым они могут управлять с помощью WASD. В настоящее время на сервере я использую byte[] для хранения всех позиций игрока. Проблема в том, что позиции не могут превышать 128 или -127. Однако DataOutputStream может записывать byte[] s, но не int[]s . Я видел, что существует функция writeInt (), но она может отправлять только одно число, а не их множество в одной переменной. Я беспокоюсь об использовании этого, потому что я не хочу, чтобы клиенты получали целые числа в неправильном порядке и что-то перепутали. Итак, реальный вопрос заключается в следующем: каков наилучший способ отправить кучу целых чисел между клиентами и сервером? Я также хотел бы сохранить скорость как можно выше. Я могу опубликовать свой текущий код, если вам нужно его увидеть.

Кстати, это мой первый пост, поэтому, если я сделал что-то не так, пожалуйста, дайте мне знать.

Комментарии:

1. Проверьте ByteBuffer и IntBuffer .

2. На этом этапе вам может показаться интересным механизм сериализации в Java.

Ответ №1:

Вам нужно:

  1. Получите соединение с клиентом. В настоящее время это обычно выполняется классом SocketChannel в пакете java.nio.

  2. Если у вас есть массив целых чисел, используйте класс IntBuffer и оберните свой int[] в экземпляр IntBuffer.

  3. Укажите ваш объект IntBuffer в качестве аргумента для метода write() вашего SocketChannel. Не забудьте сначала открыть соединение.

  4. Закройте сокет (начиная с Java 7, существует блок try-with, который автоматически закрывает ресурсы для вас).