Пишу игру http://star-engineers.blogspot.ru/ https://github.com/killofwin/star-e
Для облегчения последующего написания кода, я решил сделать работу с игровыми серверами и распределение между ними нагрузки (обрабатываемых локаций) прозрачным. То есть сделать класс-прокладку который прозрачно переведёт все запросы к классу в сетевые сообщения по TCP. Предполагается что новые мощности, то есть запущенные сервера будут подключаться к мета-серверу и уже через него получать локации на обработку. Передо мною стоит выбор и я не знаю как сделать лучше:
1) Использовать класс ServerSocket, который при попытке установки соединения на прослушиваемый порт возвращает класс Socket. После добавить этот класс в массив и обрабатывать все сокеты в цикле.
2) Установить последний элемент массива сокетов в состояние прослушивания и при установке соединения добавлять новый прослушивающий элемент в массив.
Естественно каждый способ по имеет свои недостатки связанные как с обработкой закрывшихся соединений, так и с приёмом новых соединений.