Как это работает

    ServerSR - позволяет получить доступ к рабочему столу Вашего компьютера через Интернет. Подключившись к удаленному компьютеру используя свой мобильный телефон, Вы сможете видеть экран компьютера, управлять мышью и передавать ввод текста и нажатие управляющих клавиш как при использовании клавиатуры компьютера. Программа работает с мобильными телефонами, поддерживающими Java. Программа бесплатная с открытым исходным кодом и распространяется как есть.

    Система состоит из трех программных компонент: ServerSR – консольная программа на C++ под Windows, функционирует на компьютере к которому осуществляется удаленный доступ; JMClientSR – java приложение для мобильного телефона; Интернет сервер, написанный на PHP. Эти компоненты выполняют следующие функции:

    ServerSR – основу составляет север, принимающий запрос от клиента а в ответ отправляющий упакованную картинку с экрана компьютера. В запросе содержится информация, о том какую часть экрана копировать, и какие события клавиатуры и мышки имитировать. Номер порта, который прослушивает сервер указывается в файле serversr.cfg в первой строке параметров. Для каждой следующей строки параметров динамически создается модуль, который является клиентом для внутреннего сервера и клиентом Интернет сервера. Этот модуль опрашивает Интернет сервер на предмет появления внешнего запроса и если такой имеется, он принимается по протоколу http и транслируется внутреннему серверу, а ответ отсылается Интернет серверу. Каждая, строка параметров в файле serversr.cfg начинается с символа двоеточия, за которым через пробелы идут параметры.

    JMClientSR - java приложение для мобильного телефона, исходя из разрешения экрана и положения указателя, формирует запрос, какую часть экрана отображать на телефоне или в сжатом виде весь экран компьютера на экране телефона. Так же информация о нажатиях на клавиши телефона транслируются в события клавиатуры и мышки на компьютере. В ответе на запрос содержится графическая информация, которая отображается на экране телефона. Таким образом осуществляется удаленное управление рабочим столом компьютера.

    Интернет сервер(PHPServer) - решает проблему серых ip-адресов, т.к. клиент на телефоне соединяется не с компьютером, а с Интернет сервером, так же как и ServerSR. Т.к. обмен происходит посредством протокола http в текстовом виде, система может работать при любых ограничения, если вообще возможен просмотр Интернет страниц. Алгоритм взаимодействия JMClientSR клиента и ServerSR сервера с PHPServer сервером следующий: JMClientSR формирует http запрос и отправляет на PHPServer, там он сохраняется в файл1 и PHPServer ожидает пока в файл0 будет помещен ответ от ServerSR, тем временем ServerSR формирует http запрос содержащий ответ на предыдущий запрос и отправляет его на PHPServer, там он сохраняется в файл0 тем самым прекращая состояние ожидания ответа на JMClientSR этот ответ передается на JMClientSR в теле http странички, а запрос от ServerSR переводится в состояние ожидания до появления данных в файле1. После того как файл прочитан противоположной стороной он обнуляется. Этот процесс повторяется циклически, и если сбоев передачи данных нет, то он самосинхронизируется. Если данные потерялись, процесс повторяется сначала по тайм-ауту, что может вызвать заметную задержку реакции программы. В теле запроса которые формируют JMClientSR и ServerSR содержится PHPServerRecord, ее пользователь получает при регистрации на PHPServer, это позволяет Интернет серверу давать уникальные имена файлу0 и файлу1 в пределах регистрационной записи, другими словами соединять ваш телефон именно с вашим компьютером. На рисунке показан принцип взаимодействия.

Алгоритм работы сервера (ServerSR)

    Стартует сервер и для каждого клиента работает следующий протокол типа запрос-ответ:

    - запрос означает требование данных для прорисовки. В нем указан тип данных (растровые или векторные) и содержится указание координат и размер окна, данные из которого затребованы, а так же размер окна, в котором эти данные будут прорисованы. В запросе содержится размер данных идущих вслед за запросом. Эти данные о нажатии клавиш и имитации мышки.

    - ответ формирует сервер в виде такой же структуры, как и в запросе, только данные идущие за ней кодируют графическую информацию в затребованном окне.

Структура запроса на языке C:

struct IRequest

{

public:

static const int TYPE_STRUCT = 1;

public:

const int size;  // size struct

const int type_struct; // type struct

 

unsigned short X, Y;

unsigned short W, H;

unsigned short sW, sH;

unsigned char Color;

unsigned char type_map;

int dsize;

int cnt;

};

 Где:

size – размер структуры в байтах;

type_struct – константа, обозначающая тип структуры;

X, Y – координаты запрашиваемого окна;

W, H – размер запрашиваемого окна;

sW, sH – в запросе эти поля обозначают размер окна в котором будет отображаться запрашиваемая информация а в ответе разрешение монитора на сервере;

Color – первоначально это поле должно было означать требуемую глубину цвета, но для уменьшения трафика, цвета кодируются всегда одним байтом, а в этом поле старшие четыре бита передают дополнительное управление. Бит 4 – требует от сервера вписать весь монитор в требуемое окно, бит 5 – перерисовать все окно не зависимо от предшествующих данных;

type_map – ‘A’ – запрос векторных данных, ‘B’ – запрос растровых;

dsize – размер данных идущих за структурой запроса;

cnt – номер запроса / ответа;

 

Проблема “серых” ip

Для того что-бы подключится к интернету каждый компьютер должен иметь уникальный ip-адрес, их выдают pегиональные интернет-регистраторы (Regional Internet Registry, RIR) провайдерам. Эти адреса часто называют белыми. Но в последнее время адресов на всех не хватает да и проблематично это поэтому провайдеры часто используют NAT. Маршрутизатор подменяет ip адрес клиента на свой, а клиента запоминает по порту источника. При этом клиенту выдаётся адрес из адресов для изолированных сетей 192.168.0.0/16, 172.16.0.0/12 или 10.0.0.0/8.  А потом возвращаемые пакеты преобразует обратно. Проблема в том, что из интернета достучаться до клиента невозможно, видно только маршрутизатор. Такие адреса обычно называются серыми.

Большинство компьютеров подключенных к Интернету имеют серые IP адреса, что зачастую становиться проблемой для многих сидящих за NAT'ом. Необходимость регистрации внешних IP адресов и переадресации портов устраняет Интернет сервер(PHPServer), поскольку клиент на телефоне соединяется не с компьютером, а с Интернет сервером (имеющий внешний статический IP адрес), так же как и сервер на компьютере.

Если ваш компьютер имеет белый ip-адрес, можно разместить PHPServer прямо на нем, необходимым условием в этом случае – наличие web-сервера (я использую WampServer). В случае если ip-адрес динамический, можно воспользоваться бесплатным сервисом – Динамический DNS, например здесь http://www.dyndns.com, как это сделать описано здесь http://wiki.slavka.kiev.ua/index.php/DynDNS

Реклама

On-line бронирование Kilikya Palace / Киликия Палас, отзывы Кемер, Турция