Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Programm über ein Webinterface steuern (https://www.delphipraxis.net/177905-programm-ueber-ein-webinterface-steuern.html)

d7user1 4. Dez 2013 20:30

Programm über ein Webinterface steuern
 
Hallo, in der Netzwerkprogrammierug bin ich völlig neu. Ich möchte meinem Programm gerne aus dem Internet heraus Befehle senden, welche es dann abarbeiten soll.
Lokal funktioniert das mit der Webserver Application ganz gut. Die Webserver Application ist die vorgefertigte Unit, welche Delphi einem zu Beginn über Datei > Neu > Andere > WebBroker ausgibt.

Folgende Variante funktioniert auch sehr gut: http://www.delphipraxis.net/917127-post14.html

Wie erreiche ich diesen Webserver bzw. wie spreche ich mein Programm nun von außen über das Internet an?
Ist ein Port-Forwarding im Router absolut notwendig, oder gibt es Mittel und Wege ohne?


Edit: ich habe auch schon überlegt das Programm im, keine Ahnung60-Sekunden-Takt bestimmte Dinge prüfen zu lassen.
Dabei könnte eine Textdatei auf einem Server überprüft und ausgewertet werden.
Das ist wesentlich einfacher, da kein Portforwarding usw.

Aber was meint ihr?

himitsu 4. Dez 2013 21:12

AW: Programm über ein Webinterface steuern
 
Wenn ein Router den Port nicht weiterreicht, dann kommt die Anfrage von außen nicht an deinem Coputer an.
Also ja, ein Forwarding ist notwendig. (wenn du dem Router dann nicht im Protokoll mitweilen kannst, an welche IP er weiterleiten soll)

Und wenn du den Computer aus dem weltweiten Internet ansprechen willst, mußt du die öffentliche IP (also die des Internetzugangs/Routers) kennen.
- entweder du hast eine feste IP
- oder irgendwer hinterlegt an definierter Stelle diese IP (DynIP-Server oder eigener Server ... der Router oder der Computer muß dann nur die IP auslesen und an diesen IP-Server weitergeben)

d7user1 4. Dez 2013 21:53

AW: Programm über ein Webinterface steuern
 
Hallo, dementsprechend muss ein Port-Forwarding stattfinden, wenn ich mein Programm aus dem weltweitem Internet ansprechen möchte. OK.

Was hälst du denn von meiner zweitgenannten Lösung?

Sir Rufo 4. Dez 2013 22:37

AW: Programm über ein Webinterface steuern
 
Wie kommt denn diese Textdatei oder die Änderungen darin auf den Rechner?

Wie willst du verhindern, dass jemand Unbefugtes etwas in diese Datei bringt?

d7user1 4. Dez 2013 22:56

AW: Programm über ein Webinterface steuern
 
Zitat:

Wie willst du verhindern, dass jemand Unbefugtes etwas in diese Datei bringt?
Genau daher wollte ich es eigentlich mit dem Port-Forwarding machen.

Ich habe mir auch schon überlegt das mit Upnp zu machen und darüber einen Port im Router zu öffnen.
Aber das ist eher kontraproduktiv da es doch eher gegen den Benutzer ist als für ihn finde ich.

Sir Rufo 4. Dez 2013 23:43

AW: Programm über ein Webinterface steuern
 
Zitat:

Zitat von d7user1 (Beitrag 1238566)
Zitat:

Wie willst du verhindern, dass jemand Unbefugtes etwas in diese Datei bringt?
Genau daher wollte ich es eigentlich mit dem Port-Forwarding machen.

Ich habe mir auch schon überlegt das mit Upnp zu machen und darüber einen Port im Router zu öffnen.
Aber das ist eher kontraproduktiv da es doch eher gegen den Benutzer ist als für ihn finde ich.

Wie denn nun?

Mit oder ohne Portforwarding, du musst dich entscheiden

Olli73 5. Dez 2013 00:17

AW: Programm über ein Webinterface steuern
 
Also ich sehe da folgende Möglichkeiten:

- Portweiterleitung (dann aber https verwenden!)
- VPN
- ein Webserver (https), über den die ganze Kommunikation läuft (dann spart man sich die Konfiguration von Router etc. komplett)
- "Klimmzüge" wie bei manchen Peer-to-Peer-Netzwerken, Skype, ...

Im Falle des Webservers würde ich auch nicht wie du oben schreibst "das Programm im, keine Ahnung60-Sekunden-Takt bestimmte Dinge prüfen zu lassen", sondern Push / Long Polling verwenden.

d7user1 5. Dez 2013 08:56

AW: Programm über ein Webinterface steuern
 
Hallo, das hört sich sehr interessant an. Leider finde ich keinerlei Informationen im Internet diesbezüglich.

Wie in etwa funktioniert das mit dem Polling? Peer to peer, mh. Dazu benötige ich kein Port Forwarding oder?

himitsu 5. Dez 2013 09:30

AW: Programm über ein Webinterface steuern
 
Es gibt nur zwei/drei Arten, wie eine Verbindung zwischen zwei Geräten (deine Computer/Programme) über einen Vermittler (der Router) komunizieren können
- der Router kennt Beide und weiß wo er hinleiten soll (z.B. Forarding von außen, welches auf einen bestimmten Port reagiert) ... die ZielIP ist hier ja der Router und nicht der Computer
- von innen nennt das Programm die Ziel-IP
- von außen wird das via Protokoll mitgeteilt ... quasi ein Proxy und dein Router ist nunmal kein Proxy, außerdem wurde im HTTP 1.x diese Funktionalität noch nicht integriert (geplant für 2.0)

(und die schmutzigen Tricks einiger Programme erwähne ich erst garnicht)



Richte doch einfach das Forwarding ein und gut ist. (manche Router besitzten auch eine Schnittstelle, worüber das Forwarding vom internen Programm angefragt werden kann)

Der andere Weg ist nur, daß der lokale Rechner ständig einen externen Rechner anpollt und schaut ob er da ist, aber dafür braucht man die IP dieses Rechners.

d7user1 5. Dez 2013 11:25

AW: Programm über ein Webinterface steuern
 
Hallo, das Problem ist nur, dass dies für ein öffentliches Programm gedacht ist und nicht nur für mich.

Demnach ist das in Ordnung mit dem port forwarding?

himitsu 5. Dez 2013 11:52

AW: Programm über ein Webinterface steuern
 
Zitat:

Zitat von d7user1 (Beitrag 1238606)
Demnach ist das in Ordnung mit dem port forwarding?

Ja, wenn die wollen, daß das programm von außen erreichbar ist, dann müssen die das einstellen.

Wäre ja auch zu schön, wenn jeder trojaner einfach so einen Port aufmachen könnte, über den man ihn von außen steuern kann.

sirius 5. Dez 2013 12:02

AW: Programm über ein Webinterface steuern
 
Aber denk dann dran, dass Du sehr auf Sicherheit in Deiner Kommunikation achten solltest, wenn du es an einen von außen zugänglichen Port hängst!

Olli73 5. Dez 2013 12:54

AW: Programm über ein Webinterface steuern
 
Zitat:

Zitat von d7user1 (Beitrag 1238580)
Wie in etwa funktioniert das mit dem Polling?

Polling ist: Ständig den (Web)Server abfragen, ob es eine neue Nachricht gibt. Die Abfrage erfolgt in einem gewissen Intervall. Ist das Intervall klein, ist die Rechner-/Netzwerkbelastung hoch; ist das Intervall groß, sind die Antwort-/Reaktionszeiten hoch.

daher meinte ich "long polling", um diese Nachteile zu umgehen: Du stellst am Client eine HTTP- oder XHR/Ajax-Anfrage mit einem hohen Timeout. Am Server antwortest du dann nicht direkt, sondern erst wenn eine neue Nachricht vorhanden ist, so lange wird am Server gewartet. Das ganze will natürlich threadsicher und ressourcenschonend im Webserver implentiert sein.

d7user1 5. Dez 2013 15:02

AW: Programm über ein Webinterface steuern
 
Hallo, letztendlich glaube ich werde ich es mit der Polling-Variante lösen. Damit braucht man absolut nichts im Router zu konfigurieren. Danke für all eure Antworten und sehr hilfreichen Tips! Die Diskussion kann aber gerne noch fortgeführt werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.

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