Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2011, 15:57   #1
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
Вопрос Управление прогой через браузер.

Как такое реализовать:

На одном компе находится программа
127.0.0.1:1234. С таким ip адресом и портом. Эта программа может управлять компом. Теперь надо с другого компа отправить ей команды, что она должна выполнить, и это все надо сделать через браузер. Подскажите как?

Программа должна управлятся через http протокол. Какие решения, библиотеки можно использовать для поднятия мини веб сервера внутри приложения на делфи.

Ну, раз уж "Особый Программист", то пора бы начинать понимать, в каком разделе какую тему следует размещать...
Переношу в "Работу с сетью".
Из правил раздела :
2. Не оффтопить. Оффтопом считается создание темы, не соответствующей названию раздела...
За оффтоп нарушитель получит нарушение №1.

Последний раз редактировалось mihali4; 29.11.2011 в 18:41.
VintProg вне форума Ответить с цитированием
Старый 29.11.2011, 16:21   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

веб-сервер ...обсуждалось:
1 2 3 4

p.s.: также возможно управление через ICQ сервис (компонента TICQClient v.1.34), под браузер со стороны клиента есть такой сервис tjat.com, жаббер и ирка и т.п.

Цитата:
127.0.0.1:1234. С таким ip адресом
насчет адреса подумайте.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.11.2011, 16:22   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Видел пару раз подобное ПО, и даже сердцевину пощупать получилось

А вариантов много,
например IntraWEB(идёт в поставке с delphi).
Или его подобие UniGUI
и тот и другой работают по одному принципу. Они полноценные веб-сервера способные генерировать динамические html-страницы с полным проецированием того, что есть на форме в точно такой же визуальный формат.

Демка онлаин uniGUI вот: http://unigui.com/demo

пользовался uniGUI, но не долго, причин много:
1. проект не ползает ниже delphi 2009
2. проект не выполз из BETA
3. как следствие 2-го, проект слишком сырой. Тонных ошибок. Которые будут исправлены не так уж и скоро.
4. Вам придётся выкинуть не стандартные компоненты, и стандартные тоже, и использовать те что в пакете этого чуда.

Из плюсов, ну просто словани не передать, как потрясает то что оно делает.
Ну и время от времени обновляется автором.


По поводу IntraWEB ничё не скажу, не юзал и не разобрался как.

Зато сырки, которые щупал были вполне сносными.
а вот как они работали,
программа создаёт сокет-сервер на таком-то порту и IP, реализован спец. протокол передачи данных.
И пакетики выглядят вот так:
Код:
//запрос авторизации
cMsg:=#255#255#255#255'AUTH'#255'ЛОГИН'#255'ПАРОЛЬ'#255#0;

Ответ сервера
sMsg=#255#255#255#255'AUTH'#255'OK'#255'ID для клиента'#255#0;

//действия
cMsg:=#255#255#255#255'ID'#255'Полученный id'#255'COMMAND_SMTH'#255#0;
Но можно и проще, не используя ID а просто все время вместе с пакетом логина и пароля и коммандой сунуться к серверу.

В роли сервера, твоё приложение где-то в интернетах.
В роли клиента, WEBъ скрипты, можно там-же где и сервер.

А остальное, ваша фантазия.

Последний раз редактировалось Человек_Борща; 29.11.2011 в 16:25.
Человек_Борща вне форума Ответить с цитированием
Старый 29.11.2011, 16:54   #4
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

TServerSocket - теперь бы его найти.
VintProg вне форума Ответить с цитированием
Старый 29.11.2011, 17:19   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

http://www.koders.com/delphi/fid5A45...C9CD1DAD5.aspx

p.s.: да и вообще, полезный ресурс в поиске недостающих модулей-компонентов-классов.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 29.11.2011, 17:55   #6
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

Код:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      {Определяем порт и запускаем сервер}
      ServerSocket1.Port := 1025;
      {Метод Insert вставляет строку в массив в указанную позицию}
      Memo2.Lines.Insert(0,'Server starting');
      ServerSocket1.Open;
    end;
    
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      {Останавливаем сервер}
      ServerSocket1.Active := False;
      Memo2.Lines.Insert(0,'Server stopped');
    end;
    
    procedure TForm1.ServerSocket1Listen(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      {Здесь сервер "прослушивает" сокет на наличие клиентов}
      Memo2.Lines.Insert(0,'Listening on port '+IntToStr(ServerSocket1.Port));
    end;
    
    procedure TForm1.ServerSocket1Accept(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      {Здесь сервер принимает клиента}
      Memo2.Lines.Insert(0,'Client connection accepted');
    end;
    
    procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      {Здесь клиент подсоединяется}
      Memo2.Lines.Insert(0,'Client connected');
    end;
    
    procedure TForm1.ServerSocket1ClientDisconnect(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      {Здесь клиент отсоединяется}
      Memo2.Lines.Insert(0,'Client disconnected');
    end;
    
    procedure TForm1.ServerSocket1ClientError(Sender: TObject;
      Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
      var ErrorCode: Integer);
    begin
      {Произошла ошибка - выводим ее код}
      Memo2.Lines.Insert(0,'Client error. Code = '+IntToStr(ErrorCode));
    end;
    
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      {От клиента получено сообщение - выводим его в Memo1}
      Memo2.Lines.Insert(0,'Message received from client');
      Memo1.Lines.Insert(0,'> '+Socket.ReceiveText);
    end;
    
    procedure TForm1.ServerSocket1ClientWrite(Sender: TObject;
      Socket: TCustomWinSocket);
    begin
      {Теперь можно слать данные в сокет}
      Memo2.Lines.Insert(0,'Now can write to socket');
    end;
    
    procedure TForm1.ServerSocket1GetSocket(Sender: TObject; Socket: Integer;
      var ClientSocket: TServerClientWinSocket);
    begin
      Memo2.Lines.Insert(0,'Get socket');
    end;
    
    procedure TForm1.ServerSocket1GetThread(Sender: TObject;
      ClientSocket: TServerClientWinSocket;
      var SocketThread: TServerClientThread);
    begin
      Memo2.Lines.Insert(0,'Get Thread');
    end;
    
    procedure TForm1.ServerSocket1ThreadEnd(Sender: TObject;
      Thread: TServerClientThread);
    begin
      Memo2.Lines.Insert(0,'Thread end');
    end;
    
    procedure TForm1.ServerSocket1ThreadStart(Sender: TObject;
      Thread: TServerClientThread);
    begin
      Memo2.Lines.Insert(0,'Thread start');
    end;
    
    procedure TForm1.Button3Click(Sender: TObject);
     var i: Integer;
    begin
      {Посылаем ВСЕМ клиентам сообщение из Edit1}
      for i := 0 to ServerSocket1.Socket.ActiveConnections-1 do begin
       ServerSocket1.Socket.Connections[i].SendText(Edit1.Text);
      end;
      Memo1.Lines.Insert(0,'< '+Edit1.Text);
    end;
Не работает!!!!! ((((((((((((((
VintProg вне форума Ответить с цитированием
Старый 30.11.2011, 00:41   #7
VintProg
not
Участник клуба
 
Аватар для VintProg
 
Регистрация: 27.06.2009
Сообщений: 1,399
По умолчанию

необходимо отправить ответ примерно такой:

HTTP/1.0 200 OK
Date: Wed, 11 Feb 2009 11:20:59 GMT
Server: Apache
X-Powered-By: PHP/5.2.4-2ubuntu5wm1
Last-Modified: Wed, 11 Feb 2009 11:20:59 GMT
Content-Language: ru
Content-Type: text/html; charset=utf-8
Content-Length: 1234
Connection: close

(далее следует запрошенная страница в HTML)

но как?

Последний раз редактировалось VintProg; 30.11.2011 в 00:45.
VintProg вне форума Ответить с цитированием
Старый 30.11.2011, 00:49   #8
Bright-rider
Форумчанин
 
Регистрация: 09.07.2010
Сообщений: 102
По умолчанию

Чем http://www.unigui.com/ не устраивает?
Выглядит красиво и автор отзывчивый.
Bright-rider вне форума Ответить с цитированием
Старый 23.12.2011, 00:01   #9
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...может плохо видно, все рабочее, бери, да и пользуйся http://programmersforum.ru/attachmen...5&d=1283342162
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 28.12.2011, 17:19   #10
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
По умолчанию

Доброго времени суток!
Может и мне подскажете хороший мануал по написанию вебсервера ("вебморды" для программы). Больше всего интересует логика общения по заголовкам (пример).
P.S. В принципе всё понимаю что да как, но не хотелось бы зря наступать на общественные грабли, и не совсем понятно что делать с разными заголовками от разных браузеров составленных идентичной формой.
Спасибо!
Lime вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Управление программой через браузер medved6216 Работа с сетью в Delphi 2 19.02.2013 13:30
Способ зайти на сайт не через браузер pufystyj Софт 11 18.12.2010 13:21
Проблема с загрузкой через браузер pavel42 Компьютерное железо 0 05.06.2010 23:13
Открытие элементов ListBox через браузер KiDoki Общие вопросы Delphi 7 11.10.2008 00:08
Управление чужой прогой MAcK Win Api 2 30.01.2007 14:02