Как отправить переменные по сети с мультиплеером в java?

Каждый раз, когда игрок подключается к серверу, я хочу, чтобы сервер добавлял 1 к переменной:connectedPlayers и отправлял ее всем клиентам, которые подключены к этому серверу. С одним плеером работает нормально, сервер отправляет 1 моему клиенту. Но когда я подключаюсь к другому клиенту, все становится подключенным, connectPlayers теперь: 2 на стороне сервера, НО на стороне клиента: 514, 33554434, 0, 2, 33554432, 16777216.

Некоторый код, который я использую:

user = new ArrayList<Users>();
serverSocket = new ServerSocket(7777);
Thread thread = new Thread(this);
thread.start();

и в методе запуска в цикле while(true):

socket = serverSocket.accept();
connectedPlayers++;
user.add(null);
for(int i = 0; i < connectedPlayers; i++){
    if(user.get(i) == null){
        out = new DataOutputStream(socket.getOutputStream());
        in = new DataInputStream(socket.getInputStream());
        user.set(i, new Users(out, in, i));
        Thread thread = new Thread(user.get(i));
        thread.start();
        break;
    }
}

Класс Users также является реализованным классом Runnable и делает следующее:

//reveive some stuff
for(int i = 0; i < connectedPlayers; i++){
    if(user.get(i) != null){
        //send some other stuff
        user.get(i).out.writeInt(connectedPlayers); //out = DataOutputStream
    }
}

И в классе Client (реализует Runnable) я отправляю некоторые вещи на сервер, и у меня есть еще один класс (реализует Runnable) в классе Client, который получает данные:

//send stuff to Server in the client class

//in the second class in the run method in a while loop
int playerid = in.readInt();
int x = in.readInt();
int y = in.readInt();
int image = in.readInt();
int status = in.readInt();
int connectedPlayer = in.readInt();
client.update(playerid, x, y, image, status, connectedPlayer);

Что нужно изменить, чтобы это заработало, вся помощь очень ценится. Если это слишком много кода и прочего, скажите мне, и я буду рад изменить это!

Заранее спасибо, Джоэри.


person Joeri    schedule 05.09.2015    source источник
comment
Вы получаете какие-либо исключения?   -  person Ravindra babu    schedule 05.09.2015
comment
Нет, я не... @sunrise76   -  person Joeri    schedule 05.09.2015
comment
Посмотрите stackoverflow.com/questions/32293577/   -  person Ravindra babu    schedule 05.09.2015
comment
Спасибо, надо посмотреть!   -  person Joeri    schedule 05.09.2015
comment
Вы можете отправить объект через API ObjectOutputStream. Поскольку мы не знаем, что еще вы отправляете, трудно предсказать поведение вывода.   -  person Ravindra babu    schedule 05.09.2015
comment
Просто отправьте целые числа для позиции и целое число для того, в каком направлении смотрит игрок.   -  person Joeri    schedule 05.09.2015
comment
Использование объектов вместо простых типов данных помогает понять, какое целое число соответствует какому значению.   -  person Ravindra babu    schedule 05.09.2015
comment
Вы записываете подключенных игроков себе, а также всем другим игрокам.   -  person user207421    schedule 29.07.2019