Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Remoting via Browser (https://www.delphipraxis.net/30528-remoting-via-browser.html)

Meflin 26. Sep 2004 10:21


Remoting via Browser
 
Moin zusammen,
ich habe vor, für mein programm (es beinhaltet zeitaufwändige berechnungen, sodass der user nicht immer vor dem pc sitzen wird wenn er es laufen hat) ein remote control feature einzubauen. also das programm soll kontrolliert werden können, nicht der pc :!: nur dass hier keine missverständnise aufkreuzen... nunja dieses feature möchte ich gerne so gestalten, dass man das prog über einen beliebigen webbrowser mit der ip des clients steuern kann.
dazu bräcuhte ich jetzt mal ein paar denkanstösse. ich nehme an dazu muss ich einen eigenen http server schreiben? aber wie löse ich es mit dem dann, dass die ergebnisse von einer exe zurückgegben werden, nicht aus einem html dokument?

*MFG*

jfheins 26. Sep 2004 10:36

Re: Remoting via Browser
 
Nunja, das ist nicht sooo einfach.
1. Du musst einen Webserver in dein programm einbauen.
2. Bei Anfragen muss dein Programm eine ensprechende Webseite zurückliefern ...
3. Ich spreche nicht von existierenden Webseiten, die in einem Unterordener liegen, sondern von HTML-Quellcode, den den Programm ausgibt. (Und natürlich auch manipulieren kann)

woki 26. Sep 2004 10:44

Re: Remoting via Browser
 
Hi,

wenn dir Delphi 7 Architect zur Verfügung steht, hört sich das nicht allzu schwer an. Schau dir z.b. mal die Intrawebkomponenten an. In der Entwicklungsversion haben die gleich einen einfachen Webserver eingebaut.
Die nächste Variante wäre dann einen fertigen Webserver zu verwenden.
Nur in seltenen Fällen wird es wirklich nötig sein, selber wieder einen Webserver zu entwickeln und den dann in deine Applikation hineinezukompilieren.

Grüße
Woki

Meflin 26. Sep 2004 10:52

Re: Remoting via Browser
 
Zitat:

Zitat von woki
Hi,

wenn dir Delphi 7 Architect zur Verfügung steht, hört sich das nicht allzu schwer an. Schau dir z.b. mal die Intrawebkomponenten an. In der Entwicklungsversion haben die gleich einen einfachen Webserver eingebaut.
Die nächste Variante wäre dann einen fertigen Webserver zu verwenden.
Nur in seltenen Fällen wird es wirklich nötig sein, selber wieder einen Webserver zu entwickeln und den dann in deine Applikation hineinezukompilieren.

Grüße
Woki

theoretisch tut es das, ich wills aber lieber mit der personal entwickeln (soll open source werden). aber auch bei den indys ist doch für alles mögliche ein server dabei, nicht auch ein http server? könnte man den vielleicht verwenden?

woki 26. Sep 2004 11:15

Re: Remoting via Browser
 
Zitat:

Zitat von Meflin
aber auch bei den indys ist doch für alles mögliche ein server dabei, nicht auch ein http server? könnte man den vielleicht verwenden?

Sicher, dann noch eine Anregung, Bau das Usterinterface indem du HTML-Templates erstellst, die dann von TPageproducer bearbeitet und an den Browser weitergeleitet werden. Der sollte auch bei der professionel Version dabei sein.

Jelly 26. Sep 2004 11:22

Re: Remoting via Browser
 
Zitat:

Zitat von woki
wenn dir Delphi 7 Architect zur Verfügung steht, hört sich das nicht allzu schwer an. Schau dir z.b. mal die Intrawebkomponenten an.

Wirklich :shock:
Ich nutze D7 Professional an der Uni, da sind diese Intraweb Komponenten aber auch dabei!

woki 26. Sep 2004 11:49

Re: Remoting via Browser
 
Zitat:

Zitat von Jelly
Zitat:

Zitat von woki
wenn dir Delphi 7 Architect zur Verfügung steht, hört sich das nicht allzu schwer an. Schau dir z.b. mal die Intrawebkomponenten an.

Wirklich :shock:
Ich nutze D7 Professional an der Uni, da sind diese Intraweb Komponenten aber auch dabei!

nun ja, ich habe ja auch gar nicht behauptet, daß sie bei D7 Professionel nicht dabei sind.

Meflin 26. Sep 2004 11:55

Re: Remoting via Browser
 
wie auch immer, ich will ja mit der personal arbeiten, ergo steht mir kein pageproducer zur verfügung oder?

Jelly 26. Sep 2004 11:56

Re: Remoting via Browser
 
Zitat:

Zitat von woki
nun ja, ich habe ja auch gar nicht behauptet, daß sie bei D7 Professionel nicht dabei sind.

OK, 1:0 für dich :wink:

S - tefano 26. Sep 2004 12:26

Re: Remoting via Browser
 
Hi,

noch einfacher wäre es, wenn du für die Ausgabe der Daten PHP-Scripte zurechtschusterst. Dein Programm schreibt seine Daten in irgendeine Textdatei, das Script gibt sie aus. Dann brauchst du zu deinem HTTP-Server nurnoch einen PHP-Parser :shock:

Bis dann,

S - tefano

XHelp 26. Sep 2004 12:41

Re: Remoting via Browser
 
Ich habe das gleiche schon gemacht. Nur mit TServerSocket.

Delphi-Quellcode:
unit main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ScktComp;

type
  TMainForm = class(TForm)
    SS1: TServerSocket;
    Button1: TButton;
    Button2: TButton;
    procedure SS1ClientRead(Sender: TObject; Socket: TCustomWinSocket);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  MainForm: TMainForm;
  index:TStringList;

implementation

{$R *.dfm}

procedure TMainForm.SS1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
sl:TStringList;
s:string;
i:integer;
begin
sl:=TStringList.Create;
sl.Text:=Socket.ReceiveText;
if sl[0]='GET / HTTP/1.1' then begin
  Socket.SendText(index.Text);
  Socket.Close;
end;
if sl[0]='POST / HTTP/1.1' then begin
  s:=sl[sl.Count-1];
  i:=pos('&go=',s);
  if i>0 then begin
    Delete(s,i,length(s)-i+1);
  end;
  if pos('text=',s)=1 then Delete(s,1,5);
  while pos('%0D%0A',s)>0 do begin
    i:=pos('%0D%0A',s);
    Delete(s,i,6);
    Insert(#13#10,s,i);
  end;
  Socket.SendText(s);
  Socket.Close;
end;

end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
SS1.Port:=8989;
index:=TStringList.Create;
if FileExists(ExtractFileDir(Application.ExeName) + '\index.htm') then
  index.LoadFromFile(ExtractFileDir(Application.ExeName) + '\index.htm');
SS1.Active:=true;
end;

procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
SS1.Active:=false;
end;

end.
index.htm sieht so aus:
Code:
<html>

<head>
<title>REMOTE CONTROL</title>
</head>

<table table border="0" cellpadding="0" cellspacing="0" width="100%">
  <tr>
    <td width="100%">
      <p align="center">
      [b]<font size="4">REMOTE CONTROL


      </font>[/b]
      <FORM ACTION="" METHOD="post">
<TABLE BORDER="0" width="565">
<tr>
<TR>
<TD width="103">Message:</TD> <TD width="436"><textarea ROWS="6" COLS="53" NAME="text"></textarea></TD>
</TR>
</TABLE>
<INPUT TYPE="submit" NAME="go" VALUE="Send"> <input type="reset" value="Reset" name="res">
</FORM>
     

    </td>
  </tr>
</table>

</body>

</html>
Mach dem man das programm gestartet hat, kann man unter http://127.0.0.1:8989 die index.htm findet. Das beispiel wartet auf eingabe und dann gibt die eingabe zurück. Du kannst also deine seite machen und dann im server gucken, was ausgewählt und dann einfach das machen, was du willst =)

Ist es das was du gesucht hast?

Jörn 26. Sep 2004 20:42

Re: Remoting via Browser
 
Oder wenn man sowieso einen Webserver rennen lassen will, schreibt man eine ISAPI-dll welche in den Webserver (Apache, Sambar, IIS) eingebunden werden kann. Obwohl dafür der Arbeitsaufwand bei der Methode über meinem Post wohl geringer wäre, wenn auch nicht viel.

//EDIT: Schwachfug, viel zu kompliziert hier. Hätte das mal richtig lesen sollen.

Meflin 27. Sep 2004 15:29

Re: Remoting via Browser
 
oja dann bräcuhte der user ja noch nen zusätzlichen webserver ;-) ...
nur dass bei der delphi 7 pe auch kein tserversocket dabei ist, werde also wohl den indy http server verwenden ,üssen! kennt jemand ine gute beispiel app oder ein bruachbares tutorial dafür?

*MFG*

XHelp 27. Sep 2004 20:05

Re: Remoting via Browser
 
tserversockt muss dabei sein, vielleicht ist er einfach nicht installiert... aber sockets müssen dabei sein.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz