Простое приложение для синхронизации времени между компьютерами в локальной сети. Включает удобные графические интерфейсы для сервера и клиента.
- Синхронизация времени реализована через WinAPI, поэтому приложение рассчитано на Windows. Для работы требуется запуск от имени администратора.
-
GUI-клиент (client_gui.py / client_pyqt.py / client_gui.exe):
- Синхронизация времени с сервером по сети
- Автоматический поиск сервера в локальной сети
- Сохранение и автозагрузка последнего IP и порта
- Копирование IP одним кликом
- Автозапуск клиента при старте Windows (опционально)
- Поддержка запуска от администратора для смены времени
- Логи событий прямо в окне
-
GUI-сервер (server_gui.py / server_pyqt.py / server_gui.exe):
- Запуск и остановка сервера одной кнопкой
- Выбор порта
- Просмотр логов подключений и событий
- Автоматический ответ на broadcast-запросы для поиска серверов клиентами
Запустите install_requirements.bat, чтобы установить необходимые модули (pywin32 и pyinstaller).
Создайте рабочий файл настроек client_settings.json, скопировав его из client_settings.sample.json.
- Клиент:
- Запусти
python Sources/client_gui.pyилиpython Sources/client_pyqt.py - Или
run_client_pyqt.bat
- Запусти
- Сервер:
- Запусти
python Sources/server_gui.pyилиpython Sources/server_pyqt.py - Или
run_server_pyqt.bat
- Запусти
⚠️ Для смены времени на клиенте запускать от имени администратора!
- Для смены времени на клиенте нужны права администратора.
- Если клиент не может найти сервер — проверьте брандмауэр и сетевые настройки.
- После сборки через PyInstaller запускай
client_gui.exeиserver_gui.exeиз папкиdist. - Для автозапуска и смены времени — запускать от имени администратора.
- Установи зависимости:
pip install pyinstaller pywin32 PyQt5
- Собери exe:
pyinstaller --onefile --noconsole --collect-all pywin32 --collect-all win32com --hidden-import=win32com --hidden-import=win32com.client --hidden-import=win32api --hidden-import=win32con client_gui.py pyinstaller --onefile --noconsole client_pyqt.py pyinstaller --onefile --noconsole server_gui.py pyinstaller --onefile --noconsole server_pyqt.py
- Готовые файлы будут в папке
dist.
Клиент рассылает broadcast-запрос по сети, сервер отвечает, и IP сервера автоматически подставляется в поле клиента.
Sources/
client_gui.py # GUI-клиент
client_pyqt.py # GUI-клиент (PyQt)
server_gui.py # GUI-сервер
server_pyqt.py # GUI-сервер (PyQt)
run_client_pyqt.bat # Батник для клиента PyQt
run_server_pyqt.bat # Батник для сервера PyQt
client_gui.exe # Скомпилированный клиент
server_gui.exe # Скомпилированный сервер
client_settings.sample.json # Пример настроек (скопируйте как client_settings.json)
MIT