_ Эй, у меня есть вопрос. Я хочу написать приложение, которое будет иметь несколько чатов, комнат и т. Д.
И теперь у меня есть некоторые проблемы с сервером. Моя концепция - хранить данные клиентов в классах Vector of ClientSocket.
Класс ClientSocket будет выглядеть так:
public class ClientSocket {
int client_id;
Socket socket;
}
В главном потоке сервера:
ServerSocket serverSocket;
Vector<ClientSocket> sockets;
И идея такова: когда будет установлено новое соединение, создайте новый поток, передайте вектор сокетов в качестве параметра, сгенерируйте идентификатор игрока, выполните итерации по элементам вектора, проверьте, существует ли client_id, если нет, установите идентификатор, если да, генерировать дальше и делать то же самое.
А в чем проблема? Я беспокоюсь о синхронизации. Что произойдет, если два клиента прибудут одновременно, а размер вектора изменится за это время? Я делаю это правильно? Маби, есть лучшая идея организовать это?
Заранее спасибо
Marcin
// редактировать
Я имел в виду такую ситуацию, но думаю, что я буду использовать решение Питера Лоури: