Приложение для просмотра экрана удалённого компьютера и управления им в доверенной локальной сети.
Проект является форком iplexa/screenview.
- просмотр экрана клиента в реальном времени;
- управление мышью и клавиатурой;
- масштабирование изображения с сохранением пропорций;
- полноэкранный режим на мониторе, где находится окно сервера;
- выход из полноэкранного режима через
EscилиF11; - журнал событий сервера.
- передача изображения экрана серверу;
- запуск с указанием IP-адреса и порта сервера;
- порт
9999по умолчанию; - автоматическое переподключение после разрыва соединения;
- работа через
pythonw.exeбез консольного окна при запуске BAT-файлом; - отдельные сценарии запуска и остановки для Windows;
- хранение PID запущенного клиента в локальном файле
client.pid.
Реализованы серверная и клиентская части, автоматическое переподключение клиента и сценарии запуска для Windows.
В следующих обновлениях планируются:
- автоматическая сборка EXE;
- версионирование приложения;
- публикация готовых сборок через GitHub Releases;
- дальнейшая переработка сетевого протокола.
- Windows 10 или Windows 11;
- Python 3;
- сетевое соединение между компьютерами.
Клонируйте репозиторий и перейдите в его каталог:
git clone https://github.com/dentatli/screenview.git
cd screenviewСоздайте виртуальное окружение:
python -m venv .venvУстановите зависимости:
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txtЗапустите сервер из исходного кода:
.\.venv\Scripts\python.exe server.pyПосле запуска нажмите Start Server.
По умолчанию сервер слушает TCP-порт 9999.
Укажите IP-адрес сервера:
.\.venv\Scripts\python.exe client.py 192.168.0.169Можно явно указать порт:
.\.venv\Scripts\python.exe client.py 192.168.0.169 9999Если порт не указан, используется 9999.
Если аргументы командной строки не переданы, клиент показывает диалог подключения.
После потери соединения клиент не завершается и повторяет попытки подключения автоматически.
Запуск с IP-адресом сервера:
.\start_client.bat 192.168.0.169Запуск с IP-адресом и портом:
.\start_client.bat 192.168.0.169 9999Если IP-адрес не передан, сценарий предложит ввести его вручную.
Сценарий:
- запускает клиент через
.venv\Scripts\pythonw.exe; - создаёт локальный файл
client.pid; - не запускает второй экземпляр, если текущий клиент уже работает.
Файл client.pid является локальным служебным файлом и не добавляется в Git.
.\stop_client.batСценарий читает PID из client.pid, проверяет процесс клиента, завершает его и удаляет PID-файл.
Переместите основное окно сервера на нужный монитор и нажмите Fullscreen.
Для выхода используйте:
Esc;F11;- кнопку
Exit Fullscreen.
Разрешайте входящие подключения к TCP-порту 9999 только от доверенных клиентских компьютеров.
Пример ограничения доступа в локальной сети:
сервер: 192.168.0.169
разрешённый клиент: 192.168.0.136
порт: TCP 9999
Приложение предназначено только для компьютеров, которыми вы имеете право управлять.
Текущая версия сетевого протокола:
- не использует шифрование;
- не выполняет аутентификацию клиента и сервера;
- использует Python
pickleдля передачи управляющих команд.
Из-за этого приложение нельзя напрямую выставлять в интернет или запускать в недоверенной сети. Используйте его только в изолированной или доверенной локальной сети и ограничивайте доступ средствами брандмауэра.
server.py сервер и интерфейс просмотра
client.py клиент передачи экрана
protocol.py общий пакетный протокол TCP
start_client.bat запуск клиента в Windows
stop_client.bat остановка клиента в Windows
requirements.txt зависимости Python
tests/ модульные тесты
.\.venv\Scripts\python.exe -m unittest discover -s tests -vПеред распространением форка необходимо проверить условия лицензирования исходного проекта.