Для разработчиков

ServerSR – это бесплатный проект с открытым исходным кодом, каждый может скачать исходный код, проверить на отсутствие вредоносного ПО или ошибок, найти более подходящие решения, чем те который применены в проекте на текущий момент или предложить усовершенствовать его, рассмотрю все предложения. Занимаюсь этим проектом я в свободное от основной работы время, другими словами денежное вознаграждение за участие в развитии проекта не предусматривается, но указание на авторские права вида – Автор: Иванов И.И. сайт www.ivanov.ru сохраню везде, где это возможно. Ниже приведу перечень необходимых средств разработки:

Microsoft Visual C++ 2005 http://msdn.microsoft.com/ru-ru/visualc

Java(TM) ME Platform SDK 3.0 http://www.oracle.com

WampServer Version 2.0 http://www.wampserver.com

Qt http://www.trolltech.com

Сам сервер ServerSR на компьютере, к которому осуществляется удаленный доступ, написан на C++ в Microsoft Visual C++ 2005. JMClientSR мобильный клиент для телефона написан на Java от Sun Microsystems Java(TM) ME Platform SDK 3.0. ServerPHP – интернет сервер, написан на PHP, а для отладки использовался WampServer. ClientSR – клиент для персонального компьютера, написан на C++ в Microsoft Visual C++ 2005 с применением библиотеки Qt 3.3.6.

 

Исходный код

    На страничке скачать есть ссылка на исходный код, скачиваете, разархивируете и получаете следующий состав каталогов:
ALIB - общая библиотека;
ClientSR – клиент для компьютера;
JMClientSR – мобильный клиент;
LIB – библиотека для проектов;
ServerPHP – интернет сервер;
ServerSR – сервер;
SetupSR – диалог настройки и управления службой;

Тестирование

Сразу после инсталляции, для проверки работоспособности сервера запустите в командной строке run_console.bat и ClientSR.exe, в окне ClientSR.exе должен отображаться весь рабочий стол в сжатом виде. При таком соединении не используется Интернет сервер, т.е. соединение происходит в локальной сети по адресу 127.0.0.1 порт 2000.

Для проверки работы Интернет сервера на локальной машине, запустите в командной строке run_console.bat, установите WampServer, скопируйте содержимое папки ServerPHP в рабочий каталог (по умолчанию C:\wamp\www)  и запустите WampServer, можно использовать и другой с которым Вам удобно работать. Далее, используя эмулятор телефона, я обычно пользуюсь эмулятором из состава Java(TM) ME Platform SDK 3.0. запустите на выполнение JMClientSR. Убедитесь, что в фале serversr.cfg есть стока вида:

: localhost localhost 00000000_0 -

и существует  учетная запись в телефоне с аналогичными параметрами, выберите ее из списка и выберете пункт меню «connect» на экране телефона должно появиться изображение рабочего стола Вашего компьютера.

Для нормальной работы Интернет сервера под UNIX-подобной ОС, необходимо установить для каталога ./data права на запись и чтение для всех пользователей.

Для синхронизации клиента и сервера в ServerPHP, используется функция flock(), которая накладывает некоторые ограничения в использовании файловых систем для PHP сервера. В некоторых операционных системах flock() реализован на уровне процессов. При использовании, в таких системах, многопоточных серверных API, нельзя полагаться на flock() для защиты файлов от дугих PHP-скриптов, которые работают в параллельном потоке на том же сервере! flock() не поддерживается на старых файловых системах вроде FAT и его производных, так что всегда будет возвращать FALSE в этом окружении, так же, flock () не будет работать на NFS и многих других сетевых файловых системах. Для Windows я использую NTFS.

Запись 00000000_0 активна без регистрации и позволяет соединять любой сервер с любым клиентом, это означает, что сервер и клиент может соединиться через любой ServerPHP, локальный или внешний. Но если с этой записью попытаются работать более одного сервера или клиента, возникнет неразбериха, и к Вашему компьютеру может получить доступ посторонний, такая ситуация не возникнет только при отладке системы на локальном компьютере с локальным PHP-сервером. Поэтому эту запись можно и удобно использовать только для отладки. Но даже на локальной машине можно пройти процедуру регистрации и получить запись вида xxxxxxxx_номер, сохранить ее в настройках сервера на компьютере и в телефоне и работать с ней.

Если по каким либо причинам соединение установить не удается, при этом не ясно на какой стороне (сервер или клиент) неправильная настройка, можно воспользоваться функцией “test account”, которая проверяет возможность доступа к Интернет серверу, отдельно для сервера и клиента, без их взаимодействия. Для сервера эта функция вызывается следующим образом: “ServerSR.exe /test PHPServerURL [PHPServerRecord]”, при этом отсутствие PHPServerRecord означает проверку доступности Интернет сервера (ServerPHP) в целом, а при наличии PHPServerRecord контролируется непосредственно доступность указанной записи. В программе на телефон, в меню, есть аналогичные функции. При успешном выполнении указанной функции для сервера и для клиента, при условии совпадения пароля (PasswordEndToEnd) или его отсутствии, соединение должно устанавливаться. Ошибка указанной функции говорит о неправильных настройках, либо об отсутствии доступа к Интернет серверу либо об отсутствии доступа к Интернету.

 

Недостатки

Учитывая, что ServerSR – это бесплатный проект, размещать PHP-сервер, мне приходится на бесплатном хостинге, а это влечет определенные недостатки, такие как, удаление сайта, если на нем нет активности (не жмут на рекламу) или по другим причинам, которые администратор как правило не сообщает, ограничение на почтовые отправления и размер дискового пространства. Это означает, что в не предсказуемый момент времени Интернет сервер(PHPServer) может перестать функционировать, т.е. удаленный доступ, через этот сервер будет не возможен. Проблема решается регистрацией на другом сервере, но что делать если вы действительно удалены от своего компьютера, можно конечно для подстраховки сразу зарегистрироваться на двух серверах, но ситуации это не меняет, это все равно недостаток.

    Взаимодействие сервера и клиента с Интернет сервером (PHPServer) осуществляется по http протоколу в текстовом виде, это заставляет двоичные данные кодировать в системе счисления с основанием 64, что увеличивает их объем на 50 процентов. Необходимость Интернет сервера и текстового преставления данных можно отменить, если соединять клиента с сервером непосредственно по статическому ip-адресу, эту возможность я скоро реализую, хотя не у всех будет возможность воспользоваться этим преимуществом.

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

На данный момент, нет поддержки телефонов с сенсорным экраном, хотя программа разрабатывалась без привязки к конкретной модели или производителю или разрешению экрана, но тестировал я ее на своем Nokia 6303, поэтому наилучшая совместимость будет с телефонами, имеющими такую же клавиатуру.

    Пишите мне на почту о замеченных ошибках и недостатках.


    Планируемые доработки:
1. Графическое командное меню в телефоне;
2. Блокировка экрана компьютера;
3. Прямое соединение по белому ip;

Реклама

Промышленные компьютеры и комплектующие Продажа промышленных панельных компьютеров.