Серверное приложение абстрактно можно представить в виде трех модулей.
Модуль создания соединений — основной модуль серверного приложения. Он представлен классом Server.
Класс содержит информацию о сервере — адрес и порт, сокет для приема и передачи данных клиентам. Также в классе содержится главный поток серверного приложения, который принимает запросы на подключение клиентов, список установленных соединений — объектов класса Connection. В сервере хранится список зарегистрированных пользователей.
Здесь же инициализируется объект LogWriter, который отвечает за ведение журнала событий.
Этот модуль осуществляет ожидание нового подключения, а когда подключение инициировано — создает новое соединение для передачи данных.
Модуль обслуживания соединений — модуль, задачей которого является осуществление связи между клиентом и сервером. Он представлен классом Connection.
Класс содержит информацию о конкретном соединении — сокет для передачи данных, имя клиента и поток для организации параллельной обработки сервером запросов от клиентов. Задача модуля — получение, анализ и отправка пакетов клиентам.
Модуль сбора статистики необходим для осуществления контроля действий, происходящих на сервере. Модуль представлен классом LogWriter.
Задача модуля — осуществлять анализ событий и записывать информацию он них в лог-файл для последующего анализа состояний сервера. Модуль тесно связан с двумя вышеописанными методами, так как выполняется наряду с работой других модулей клиентского приложения.
Листинг программных модулей представлен в приложении.