Каждый раз, когда игрок подключается к серверу, я хочу, чтобы сервер добавлял 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);
Что нужно изменить, чтобы это заработало, вся помощь очень ценится. Если это слишком много кода и прочего, скажите мне, и я буду рад изменить это!
Заранее спасибо, Джоэри.