Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Konzeptfrage - Internet-Chat als Freeware, wie? (https://www.delphipraxis.net/108845-konzeptfrage-internet-chat-als-freeware-wie.html)

hincapie 20. Feb 2008 11:37


Konzeptfrage - Internet-Chat als Freeware, wie?
 
Hallo Leute,
da ich meinen auf der Basis der Indy TCP-Komponenten erstellten Internet-Chat als Freeware veröffentlichen möchte, habe ich da eine Frage zum Konzept: :gruebel:

Der Chat beruht auf folgendem Prinzip:

Der Server nutzt die IP des PCs, auf dem er läuft und die Clients loggen sich bei dieser IP ein.
So weit, so einfach. Nun stellt sich mir aber folgendes Problem:

Wie erfahren die Clients die notwendige IP?

Meine Idee: Ich richte eine globale Website ein, wo sich jeder Server mit Angabe der IP anmelden kann.
So müssen die Clients nur noch auf dieser Seite die entsprechende IP suchen.

Wie kann man so etwas am besten machen? Eventuell mit einer Datenbank? Wie sicher ist so was?

Hat jemand vielleicht noch eine andere Idee?

Bin für jedes Posting dankbar! :coder2:

Tormentor32 20. Feb 2008 12:23

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Vielleicht könnte sich dein Client mit der Webseite verbinden und alle verfügbaren Server abfragen und in einer Combobox auflisten. Wenn man einen Server startet kann man diesen dann auf der Webseite registrieren.

Xong 20. Feb 2008 12:50

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Hat jemand vielleicht noch eine andere Idee?

Ich würde die Server lokal bei den Clienten speichern. So, wie es Ventrilo oder TeamSpeak machen. Dort kann man einen neuen Server hinzufügen (IP-Adresse, Name und Benutzername/Passwort).
Wenn man dann auf einen Server willst, sucht man sich einfach in der Liste der erstellten Server den gewünschten aus und verbindet!

hincapie 21. Feb 2008 08:02

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
So, um das Ganze noch mal etwas detaillierter darzustellen:

Der Chat läuft seit einiger Zeit quasi in einer Art Test, zwar übers Internet, aber nur mit einigen ausgesuchten Clients.
Der Server wird dabei immer auf meinem PC gestartet und teilt die IP meines Computers mittels FTP einer bestimmten Website mit.
Die Clients suchen beim Einloggen automatisch nach einer bestimmten Stelle im HTML-Quelltext dieser Seite, um festzustellen, ob der Server online ist oder nicht. Ist er online, wird die IP aus eben diesem Quelltext ausgelesen und der Client loggt sich ein.
Wird der Server abgemeldet, läuft das Ganze genauso.

Nun zur praktischen Erweiterung des Chats:
Ich habe bei meinem Webspace-Provider einen FTP-Account eingerichtet, der nur den Zugang zu einem ganz bestimmten Verzeichnis zulässt. In diesem Verzeichnis soll dann der gesamte "Verkehr" des Chats verwaltet werden, also die Darstellung der aktiven Server, vielleicht nach dem Muster Angabe der IP, Name eines Chatroomes und einer Kategorie wie z.B Programmierung oder Sport.

Könnte man so etwas mit einer PHP-Datei machen? Vielleicht eine einfache Liste per HTML z. B. in einem <DIV>-Container verwalten? :gruebel:


Oder mit einer Datenbank? Auf meinem Webspace läuft eine MySQL-Datenbank, da könnte ich ja eine entsprechende Tabelle einrichten. Aber ist das nicht etwas aufwändig?
Und wie sieht es da mit der Sicherheit aus, schließlich muss jeder Server ja auch die Zugangsdaten der Datenbank kennen... :coder2:

Xong 21. Feb 2008 09:14

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Könnte man so etwas mit einer PHP-Datei machen? Vielleicht eine einfache Liste per HTML z. B. in einem <DIV>-Container verwalten? :gruebel:

Du willst ja nichts anzeigen. Also wäre eine XML-Datei besser.

Zitat:

Zitat von hincapie
Oder mit einer Datenbank? Auf meinem Webspace läuft eine MySQL-Datenbank, da könnte ich ja eine entsprechende Tabelle einrichten. Aber ist das nicht etwas aufwändig?
Und wie sieht es da mit der Sicherheit aus, schließlich muss jeder Server ja auch die Zugangsdaten der Datenbank kennen... :coder2:

Da wäre mir der Aufwand und das Risiko zu groß.
Ich würde ein kleines PHP-Script schreiben, das die Daten aus der Datenbank liest und dem Programm als XML zur Verfügung stellt. Dabei kennt nur das PHP-Script die Zugangsdaten zur Datenbank und du musst dich darum nicht mehr kümmern.

Im Programm solltest du sehr einfach die XML-Datei auslesen und verarbeiten können.

hincapie 21. Feb 2008 09:37

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Xong
Du willst ja nichts anzeigen. Also wäre eine XML-Datei besser.

Eigentlich schon, am liebsten wäre es mir, eine Liste der aktiven Server sowohl auf der Webseite als auch in dem Client-Programm anzuzeigen.

Dani 21. Feb 2008 09:40

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
(Dynamic)DNS?

Xong 21. Feb 2008 09:40

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Dann erstellst du eben zusätzlich ein Script, dass die Server in sauberem HTML auflistet.

hincapie 21. Feb 2008 10:03

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Dani
(Dynamic)DNS?

Wie meinst Du das, ich habe ja schon eigenen Webspace? :gruebel:

QuickAndDirty 21. Feb 2008 10:10

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Zitat:

Zitat von Dani
(Dynamic)DNS?

Wie meinst Du das, ich habe ja schon eigenen Webspace? :gruebel:

Er meint du kannst dir vom Client aus einfach direkt auf den chat verbinden
den trägt man dann als DNS name ein und er ist über DYNDNS immer erreichbar auch wenn die IP sich ändert

hincapie 22. Feb 2008 06:04

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von QuickAndDirty
Er meint du kannst dir vom Client aus einfach direkt auf den chat verbinden
den trägt man dann als DNS name ein und er ist über DYNDNS immer erreichbar auch wenn die IP sich ändert

Es soll ja gerade keinen zentralen Server geben, auf meiner Webseite werden nur die Kontaktdaten der einzelnen aktiven Server (d. h. des jeweiligen Computers, auf dem der eigentliche Chat-Server läuft) bereitgestellt und an die Clients übermittelt.

Nuclear-Ping 22. Feb 2008 06:36

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Und wo ist genau das Problem?

hincapie 22. Feb 2008 06:38

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Also, nach einigen Tipps werde es jetzt wohl so machen:

Eine MySQL-Tabelle für die Daten der Server (IP-Nummer, Port und weitere Infos) ist auf meinem Webspace bereits eingerichtet.
Eine PHP-Datei mit den Zugangsdaten der Datenbank liegt dort ebenfalls bereit.

Die gesamte Kommunikation zwischen den Servern bzw. Clients und dieser Datenbank wird über PHP-Scripte gesteuert.
Dabei verwende ich die Komponente IdHttp von Indy, um die auf den lokalen Rechnern zusmmmengestellten Scripte an die Datenbank zu senden.

Im einzelnen:
Der Server sendet beim Anmelden einen SQL-INSERT-Befehl über IdHttp, damit er in die Datenbank aufgenommen wird.
Der Client sendet ein Script mit einem SELECT-Befehl zur Anzeige der aktiven Server, zum Einloggen wird dann die entsprechende IP übernommen.
Beim Abmelden sendet der Server einen DELETE-Befehl, um den Datensatz aus der Datenbank zu löschen.

Zur Anzeige der aktiven Server plane ich einmal eine PHP-Datei mit HTML-Befehlen zur Darstellung im Browser sowie ein Script mit reinem PHP, um möglichst nur die Daten aus der Datenbank an die Clients zu schicken.
Dabei plane ich, die Felder der Datenbank mit Kommas und die einzelnen Datensätze mit
z. B.
zu trennen, um sie eventuell in eine Stringlist laden zu können.

Wäre nett, wenn jemand mal checken könnte, ob ich irgendetwas vergessen habe oder ob es vielleicht einfacher gehen könnte... :gruebel: :coder2:

Nuclear-Ping 22. Feb 2008 06:45

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Warum greifst du nicht direkt aus Delphi auf die MySQL-DB zu?

Klar, manche/viele Anbieter erlauben nicht den externen Zugriff auf ihre MySQL-Server, aber so ist es doch auch doppelt-gemoppelt?

Xong 22. Feb 2008 07:33

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Nuclear-Ping
Warum greifst du nicht direkt aus Delphi auf die MySQL-DB zu?

Klar, manche/viele Anbieter erlauben nicht den externen Zugriff auf ihre MySQL-Server, aber so ist es doch auch doppelt-gemoppelt?

Aber so ist er von der Datenbank völlig unabhängig und kann sich mit dem PHP-Script seine eigene "Spezifikation" schaffen.

Alles hat Vor- und Nachteile. =)

Zitat:

Zitat von hincapie
Der Server sendet beim Anmelden einen SQL-INSERT-Befehl über IdHttp, damit er in die Datenbank aufgenommen wird.
Der Client sendet ein Script mit einem SELECT-Befehl zur Anzeige der aktiven Server, zum Einloggen wird dann die entsprechende IP übernommen.
Beim Abmelden sendet der Server einen DELETE-Befehl, um den Datensatz aus der Datenbank zu löschen.

Zur Anzeige der aktiven Server plane ich einmal eine PHP-Datei mit HTML-Befehlen zur Darstellung im Browser sowie ein Script mit reinem PHP, um möglichst nur die Daten aus der Datenbank an die Clients zu schicken.
Dabei plane ich, die Felder der Datenbank mit Kommas und die einzelnen Datensätze mit
z. B.
zu trennen, um sie eventuell in eine Stringlist laden zu können.

Mal greifst du direkt auf die Datenbank zu, mal gehst du über ein Webinterface. Da hat Nuclear-Ping schon recht. Man könnte auch alles direkt vom Server lesen. Schließlich sind die Verbindungsdaten ja sowieso schon im Programm. (Ich weiß, ich weiß, ich habe dir ja auch erst etwas anderes empfohlen. :mrgreen: )

Was machst du eigentlich, wenn sich der Server nicht korrekt abmeldet, sondern einfach abstürzt (sei es durch Stromausfall oder Mutwillen)?

hincapie 22. Feb 2008 08:06

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Hhhmmm, ich möchte das ganze so einfach und flexibel wie möglich halten, daher scheint mir der Zugriff mit PHP am besten.

Knackpunkt ist eben noch die Übertragung der Server-Daten an die Clients:
Mir wäre am liebsten, möglichst nur die Daten aus der Tabelle zu schicken und im Client z.b. in einer Listbox darzustellen.
Eventuell sollte ich da nach jedem Datensatz anstatt
lieber die PHP-Anweisung /n benutzen?

Beim Absturz eines Servers?
Gute Frage, dafür gibt es ja diesen Thread... :gruebel: :zwinker:
Vielleicht irgendwie mit einem PHP-Script die Erreichbarkeit des Servers überprüfen? :?:

Progman 22. Feb 2008 08:15

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
hm... ich kann das Gesamtkonzept dieses Chatsystems nicht recht nachvollziehen. Wieso brauch man mehrere Server?
Ein zentraler Server genügt doch und jeder Client meldet sich über ein definiertes Protokoll an. Der Server (DynDNS- oder no-ip-URL) übernimmt die Verwaltung der Kommunikation zwischen den Clients und das wars (siehe IRC). Das wäre doch wesentlich einfacher als so eine komplizierte Geschichte ;)

Xong 22. Feb 2008 08:28

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Hhhmmm, ich möchte das ganze so einfach und flexibel wie möglich halten, daher scheint mir der Zugriff mit PHP am besten.

Es muss ja nicht PHP sein. Du kannst auch Delphi-Programme (bzw. jegliches Kompilat aller möglichen Programmiersprachen) über das CGI auf einem Webserver laufen lassen. Die Einrichtung ist nicht weiter schwierig. Der Anbieter muss CGIs nur unterstützen. Solltest du da Interesse haben, kannst du dich gerne an mich wenden.

Zitat:

Zitat von hincapie
Knackpunkt ist eben noch die Übertragung der Server-Daten an die Clients:
Mir wäre am liebsten, möglichst nur die Daten aus der Tabelle zu schicken und im Client z.b. in einer Listbox darzustellen.
Eventuell sollte ich da nach jedem Datensatz anstatt
lieber die PHP-Anweisung /n benutzen?

Ich verstehe deinen Wunsch nach Kapselung und kann ihn nur unterstützen.
Deshalb ein paar Gedanken:
Du solltest auf dem Masterserver, der die Server verwaltet, ein Interface einrichten. Darüber können Clients die aktuellen Server abfragen und die Server ein- bzw. austragen.
Der Vorteil ist, dass du das Masterserverprogramm beliebig verändern kannst, solange die Schnittstelle erhalten bleibt. Typisch für OOP eben.
Es können aber Probleme auftreten. Du musst die Anfragen deines Chatprogramms eindeutig identifizieren. Was passiert, wenn eine falsche Anfrage ankommt? (z.B. könnte sich ein Script als Server ausgeben und eintragen lassen, obwohl es gar kein Server ist.)
Bei der Ausgabe der Serverliste brauchst du dir hingegen keine großen Sorgen machen.

Zitat:

Zitat von hincapie
Beim Absturz eines Servers?
Gute Frage, dafür gibt es ja diesen Thread... :gruebel: :zwinker:
Vielleicht irgendwie mit einem PHP-Script die Erreichbarkeit des Servers überprüfen? :?:

Dafür könnte man einen Cronjob einrichten bzw. das Masterserverprogramm gleich als Dienst auf dem Masterserver laufen lassen.

Ziemlich kompliziert. Ich lasse mich auch gerne belehren, wenn jemand eine bessere Idee hat. =)

hincapie 22. Feb 2008 11:36

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Xong
...
Ziemlich kompliziert.
...

Puuh, ich glaube das übersteigt etwas meinen Horizont... :gruebel:
Mit CGI kenn ich mich gar nicht aus, schon gar nicht zusammen mit Delphi... :cry:

@ Xong:
Falls Du genügend Geduld hast, kannst Du mir das ja mal näher erläutern... :chat:

Xong 22. Feb 2008 12:09

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Puuh, ich glaube das übersteigt etwas meinen Horizont... :gruebel:

Ach was! Ich hab´s auch hinbekommen. :stupid:

Zitat:

Zitat von hincapie
Mit CGI kenn ich mich gar nicht aus, schon gar nicht zusammen mit Delphi... :cry:

Das schöne ist ja, dass es da gar keinen Zusammenhang gibt. :mrgreen:

Zitat:

Zitat von hincapie
Falls Du genügend Geduld hast, kannst Du mir das ja mal näher erläutern... :chat:

Gern, aber erst nach der Arbeit. Ich melde mich heute Abend/Nacht nochmal hier. Vielleicht Editiere ich den Beitrag einfach, also halt die Augen steif... äh offen! :wink:

hincapie 26. Feb 2008 11:41

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Für alle, die's interessiert:

Hier der Link zum entsprechenden Thread im Delphi-Forum:
http://www.delphi-forum.de/viewtopic.php?t=80977

Jeopardize 26. Feb 2008 13:56

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab irgendwo einmal das Tutorial gefunden. Vielleicht hilft es.

hincapie 27. Feb 2008 08:51

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Jeopardize
Ich hab irgendwo einmal das Tutorial gefunden. Vielleicht hilft es.

Nichts für ungut, aber den eigentlichen Chat habe ich schon längst programmiert... :wink:
siehe erstes Posting... :zwinker:

Xong 28. Feb 2008 09:17

Re: Konzeptfrage - Internet-Chat als Freeware, wie? [CGI]
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von hincapie
Falls Du genügend Geduld hast, kannst Du mir das ja mal näher erläutern... :chat:

Ich bin soweit! =)

Ich erkläre dir das am besten anhand eines kleines Tutorials.
Achja, es geht um CGI.

Mein Testsystem ist das aktuelle XAMPPLITE-Paket von http://apachefriends.org. Ich gehe einfach mal davon aus, dass du auch einen Indianer zur Verfügung hast.

Meine gesamten Angaben beziehen sich auf http://httpd.apache.org/docs/2.0/howto/cgi.html.
  1. Warum eigentlich CGI?
    Das Common Gateway Interface stellt eine Schnittstelle zur Verfügung, die es uns erlaubt mit einem beliebigen Programm in einer beliebigen Programmiersprache Eingaben, die über eine Webseite kommen und vom HTTP Server an unser Programm weitergeleitet werden, zu verarbeiten und Ergebnisse auszugeben. Mächtig gewaltig (, Egon)!
  2. Die Konfiguration
    Normalerweise ist der Apache vom Start weg "CGI-fähig". Deswegen werde ich dazu keine weiteren Ausführungen machen. Eine gute Beschreibung, wie man den Apache für das CGI richtig konfiguriert, findet man im oben geposteten HowTo.
  3. Das erste CGI-Programm
    Ich erstelle in Delphi eine Konsolenanwendung mit folgendem Code:
    Delphi-Quellcode:
    program hw;

    {$APPTYPE CONSOLE}

    uses
      SysUtils;

    begin

      writeln(AnsiToUtf8('Content-type: text/html'));
      writeln;
      writeln(AnsiToUtf8('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">'));
      writeln(AnsiToUtf8('<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">'));
      writeln(AnsiToUtf8('<head>'));
      writeln(AnsiToUtf8('<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />'));
      writeln(AnsiToUtf8('<title>Beispielprogramm</title>'));
      writeln(AnsiToUtf8('</head>'));
      writeln(AnsiToUtf8('<body>'));
      writeln(AnsiToUtf8('<h1>Hallo Welt</h1>'));
      writeln(AnsiToUtf8('</body>'));
      writeln(AnsiToUtf8('</html>'));

    end.
    Diese Datei speichere ich als hw.exe im Verzeichnis <Installationspfad von XAMPP>/cgi-bin/ und rufe, nachdem ich den Apache gestartet habe, die URL http://127.0.0.1/cgi-bin/hw.exe auf. Als Ausgabe erhalte ich: "Hallo Welt!".
  4. Erklärung des Quellcodes
    Möchte man an den Browser etwas ausgeben, so muss man einfach in die Standardausgabe schreiben. Das geschieht mit der Funktion writeln automatisch.
    Als erstes muss ein Header angegeben werden. Dieser sagt dem Browser u.a. von welchem MIME-Typ die zu empfangende Ressource ist. In unserem Fall ein einfaches HTML-Dokument. Auf die Header müssen mindestens zwei Zeilenumbrüche folgen. Dann folgt der eigentliche Inhalt. Es dürfte eigentlich alles klar sein bis hier hin, oder?
  5. Eingaben auslesen
    Die GET-Parameter bekommt aus dem Querystring, die POST-Parameter über die Standardeingabe.
    Damit habe ich mich in Delphi noch nicht beschäftigt und verweise dich auf die Klasse TCGIRequest. Es ist ohne Probleme möglich, die Parameter einzulesen und weiterzuverarbeiten.
  6. Möglichkeiten und Fazit
    Mit einer CGI-Anwendung ist es nicht nur möglich HTML-Dokumente auszuliefern. Genauso gut kann man ein Bild berechnen und ausgeben. Oder ein Stylesheet. Oder eine Textdatei. Oder oder oder...
    CGI-Anwendungen sind mächtig und flexibel. Mit ihnen kann ein Programmierer in der Sprache seiner Wahl arbeiten und alles Mögliche realisieren.
    Auf jeden Fall sehr interessant und würdig, sich näher damit zu beschäftigen.

Ich habe übrigens auch noch ein Tutorial hier aus der DP gefunden: Eine einfache CGI-Anwendung (WinCGI.DLL).

Ich hoffe, das hilft dir weiter. =)

LG,
Xong
:hi:

hincapie 29. Feb 2008 08:13

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
@ Xong: Puuh, da stellst Du aber ganz schöne Ansprüche an mich... :shock:

Hab's mir erstmal einfach gemacht, Deine HW.exe auf meinen Webspace ins cgi-bin-Verzeichnis geladen und per Browser aufgerufen. Der bietet mir dann diese Datei zum Download an!! :gruebel: :?:

Bei dem Tutorial mit der dll stellt sich mir die Frage, wie muss ich die denn ansprechen?

Du siehst, Du hast es hier mit einem totalen Anfänger in Sachen CGI zu tun... :zwinker:

Xong 29. Feb 2008 08:26

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von hincapie
Hab's mir erstmal einfach gemacht, Deine HW.exe auf meinen Webspace ins cgi-bin-Verzeichnis geladen und per Browser aufgerufen. Der bietet mir dann diese Datei zum Download an!! :gruebel: :?:

Das Problem ist, dass die Datei nicht ausgeführt wird. Es kann helfen, die Datei in hw.cgi umzubenennen.
Oder du erstellst ein neues Verzeichnis auf deinem Webspace und lädst die .htacces-Datei, die ich angehängt habe in dies Verzeichnis. Dann noch die hw.exe da rein und wenn du Glück hast funktioniert das.
Der Webspaceanbieter muss halt bei der ganzen Sache mitspielen. Schließlich sind ausführbare Programme immer auch ein Sicherheitsrisiko. Welchen Anbieter hast du? Oder hast du vielleicht sogar einen eigenen Server?

Zitat:

Zitat von hincapie
Bei dem Tutorial mit der dll stellt sich mir die Frage, wie muss ich die denn ansprechen?

Endungen sind im Web nur Schall und Rauch. Du kannst die Datei auch schoko.pudding nennen. Solange der Webserver weiß, wie er damit umzugehen hat, ist alles andere egal.

Edit: Jetzt habe ich doch wirklich die Datei vergessen... -.-

hincapie 29. Feb 2008 08:47

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Ok, habe nun die hw.exe und die .htaccess in ein Verzeichnis geladen und versucht auszuführen.
Bekomme folgende Fehlermeldung im Browser:
Das Skript konnte nicht fehlerfrei ausgeführt werden.
Häufige Ursachen sind, dass das Skript nicht im ASCII-Modus hochgeladen oder der Interpreter (z.B.: #!/usr/bin/perl) nicht angegeben wurde.

Mein Anbieter ist übrigens www.hosteurope.de

hitzi 29. Feb 2008 08:48

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Kann man ein mit Delphi erstelltes Programm, einfach umbenennen und auf jeden belieben Webspace(Linux, Win), welcher natürlich CGI unterstützt, ausführen lassen???
CGI war für mich eigentlich immer nur eine Interpretersprache, wie PHP, nur mit einer anderen Syntax.


[EDIT] Soweit ich das jetzt gelesen habe, muss es ein Windowsserver sein. Hier gibt's von Sakura auch ein Tutorial dazu: http://www.delphipraxis.net/internal...ect.php?p=3215

Xong 29. Feb 2008 09:19

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Ok, habe nun die hw.exe und die .htaccess in ein Verzeichnis geladen und versucht auszuführen.
Bekomme folgende Fehlermeldung im Browser:
Das Skript konnte nicht fehlerfrei ausgeführt werden.
Häufige Ursachen sind, dass das Skript nicht im ASCII-Modus hochgeladen oder der Interpreter (z.B.: #!/usr/bin/perl) nicht angegeben wurde.

Der Server erwartet also eine Textdatei. Er vermutet hinter der CGI-Anwendung ein Perlskript.

Zitat:

Zitat von hincapie
Mein Anbieter ist übrigens www.hosteurope.de

Eigener Server oder ein Webhostingpaket?

Ich vermute mal, dass Host-Europe das Ausführen von Binärdateien unterbindet. Aber das müsstest du ggf. mit dem Support klären.
Allerdings denke ich, dass der Aufwand (evtl. auch vom Preis her) einfach zu groß wird. =)


Zitat:

Zitat von hitzi
[EDIT] Soweit ich das jetzt gelesen habe, muss es ein Windowsserver sein. Hier gibt's von Sakura auch ein Tutorial dazu: http://www.delphipraxis.net/internal...ect.php?p=3215

Guter Punkt! Natürlich läuft ein unter Windows kompiliertes Delphiprogramm auch nur auf einem Windows-Server.
Das Problem von hincapie ist aber, dass der Server eine Textdatei vermutet, aber eine ausführbare Binärdatei bekommt.

Zitat:

Zitat von hitzi
Kann man ein mit Delphi erstelltes Programm, einfach umbenennen und auf jeden belieben Webspace(Linux, Win), welcher natürlich CGI unterstützt, ausführen lassen???
CGI war für mich eigentlich immer nur eine Interpretersprache, wie PHP, nur mit einer anderen Syntax.

Unter Punkt 1 (Warum eigentlich CGI?) habe ich geschrieben, dass CGI nur eine Schnittstelle ist. Nicht mehr, aber auch nicht weniger. =)
Oder um das Apache-HowTo zu zitieren:
Zitat:

The CGI (Common Gateway Interface) defines a way for a web server to interact with external content-generating programs, which are often referred to as CGI programs or CGI scripts. It is the simplest, and most common, way to put dynamic content on your web site.
Edit: PHP wird auch manchmal über das CGI genutzt. Genauso wie Perl, Ruby, Phyton...

LG,
Xong

hincapie 3. Mär 2008 07:17

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Also, ich habe das mit CGI am Wochenende mal etwas getestet.
Offensichtlich lässt mich mein Hoster nicht so ohne weiteres Binärdateien auf dem Server ausführen.
Daher scheidet diese Variante für mich leider aus... :cry:

Dafür läuft die PHP-Variante schon ziemlich gut... :thumb:

Was mich noch interessieren würde:

Gibt es eine Möglichkeit, mit php eine Funktion auf dem Server einzubauen, mit der man z.b. regelmäßig überprüfen kann, ob ein bestimmter Zeitraum abgelaufen ist, ohne diese Funktion immer wieder manuell neu zu starten? :gruebel:

Xong 3. Mär 2008 08:04

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Also, ich habe das mit CGI am Wochenende mal etwas getestet.
Offensichtlich lässt mich mein Hoster nicht so ohne weiteres Binärdateien auf dem Server ausführen.
Daher scheidet diese Variante für mich leider aus... :cry:

Schade. Aber wenigstens weißt du jetzt von der Möglichkeit. Hilfreich ist das allemal. =)

Zitat:

Zitat von hincapie
Gibt es eine Möglichkeit, mit php eine Funktion auf dem Server einzubauen, mit der man z.b. regelmäßig überprüfen kann, ob ein bestimmter Zeitraum abgelaufen ist, ohne diese Funktion immer wieder manuell neu zu starten? :gruebel:

Ja, das nennt man einen Cronjob.
Dafür ist es wichtig, eine eigene Datei zu haben, die die gewünschten Funktionen ausführt.
Hosteurope bietet so etwas auch an: http://www.hosteurope.de/faq/index.php?cpid=2054.

Solltest du ein Webpaket haben, wo das nicht unterstützt wird, dann kannst du http://www.cronjob.de kostenlos nutzen.

hincapie 3. Mär 2008 09:35

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Xong
Solltest du ein Webpaket haben, wo das nicht unterstützt wird, dann kannst du http://www.cronjob.de kostenlos nutzen.

Nein, mein Webpaket unterstützt keine Cronjobs, also habe ich mich mal bei www.cronjob.de angemeldet. :thumb:

So, nun möchte ich mit php alle Server aus der Datenbank löschen, die mehr als einen Tag eingetragen sind:
Code:
<?php
include("../cgi-bin/einlog.php");
include("funk.php");
$timestamp = time();
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die("F");
$sql= sprintf("DELETE FROM Chat
        WHERE Login='%s'",
   mysql_real_escape_string($timestamp -1));
If ($res=send_sql($db,$sql)) {echo "OK";}
?>
Kann das so funktionieren? :gruebel:

Xong 3. Mär 2008 11:18

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
[quote="hincapie"]
Zitat:

Zitat von Xong
So, nun möchte ich mit php alle Server aus der Datenbank löschen, die mehr als einen Tag eingetragen sind:

Wieso? Wäre es nicht besser, die Server zu löschen, die seit x Minuten inaktiv sind?

Zitat:

Zitat von hincapie
Kann das so funktionieren? :gruebel:

Nein. :roll:
Du musst schon überprüfen, welcher Server älter als einen Tag ist.
Code:
<?php
include('../cgi-bin/einlog.php');
include('funk.php');
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die('F');
If ($res=send_sql($db,'DELETE FROM Chat
        WHERE to_days(Login) < to_days(NOW())')) {echo 'OK';}
?>
Übrigens: Die Funktion timestamp() gibt dir immer einen Wert in Sekunden zurück.

LG,
Xong

hincapie 4. Mär 2008 06:10

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von Xong
Wieso? Wäre es nicht besser, die Server zu löschen, die seit x Minuten inaktiv sind?

Mal sehen, war erst mal nur ein Anhaltspunkt, um zu sehen wie es funktioniert... :gruebel:
Zitat:

Zitat von Xong
Übrigens: Die Funktion timestamp() gibt dir immer einen Wert in Sekunden zurück.

Man lernt halt nie aus..., ansonsten natürlich vielen Dank für Deine Hilfe! :zwinker:
Sollte ich noch Fragen habn, werde ich sie hier stellen... :mrgreen:

Xong 4. Mär 2008 07:24

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Zitat:

Zitat von hincapie
Zitat:

Zitat von Xong
Wieso? Wäre es nicht besser, die Server zu löschen, die seit x Minuten inaktiv sind?

Mal sehen, war erst mal nur ein Anhaltspunkt, um zu sehen wie es funktioniert... :gruebel:

Ich habe mir noch einmal Gedanken darüber gemacht. Am besten wäre, wenn du die Server alle 5-10 Minuten das Anmeldeskript aufrufen lässt. Ist der Server noch nicht eingetragen, so schreibt das Skript ihn in die Liste, ansonsten wird der betreffende Eintrage (wichtig ist hier ein Zeitstempel) geupdatet.

Mit dem Cronjob fragst du schließlich alle 10-15 Minuten ab, welche Einträge älter als eben diese 10-15 Minuten sind und löschst sie aus der Liste der aktiven Server.

Zusätzlich kann sich ein Server natürlich auch regulär abmelden.


Zitat:

Zitat von hincapie
Man lernt halt nie aus..., ansonsten natürlich vielen Dank für Deine Hilfe! :zwinker:
Sollte ich noch Fragen habn, werde ich sie hier stellen... :mrgreen:

Gern. =)

hincapie 12. Mär 2008 11:33

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
@ Xong:
Hhhmm, Deine Vorschläge scheinen mir ziemlich schlüssig zu sein... :gruebel: :-D

Im Moment habe ich in der Datenbank ein Login-Feld im Date-Format, demnach müsste ich das in ein DateTime umwandeln oder ein zusätzliches Time-Feld einfügen...

Was ist wohl besser? :gruebel:

Werde mir auch nochmal die Syntax für das UPDATE-Statement in MySQL zu Gemüte führen... :coder2:

hincapie 19. Mär 2008 14:29

Re: Konzeptfrage - Internet-Chat als Freeware, wie?
 
Ok, ich konnte mich erst jetzt wieder mit dem Thema näher befassen...

Ich habe jetzt noch ein Feld 'LogTime' vom Typ TIME eingefügt, in diesem wird von den Servern die jeweilige Login-Zeit eingetragen.

Demnach müsste ein Script zum Löschen aller Server, die länger als 10 Minuten eingeloggt sind, wohl so aussehen? :gruebel:
Code:
<?php
include('../cgi-bin/einlog.php');
include('funk.php');
$connect=@mysql_connect($dbHost, $dbUser, $dbPass) or die('F');
If ($res=send_sql($db,'DELETE FROM Chat
        WHERE time_to_sec(LogTime) < time_to_sec(TIME()-600)')) {echo 'OK';} 
?>
Könnte man da nicht auch etwas mit TIMEDIFF machen?
Evtl. so:
Code:
...
If ($res=send_sql($db,'DELETE FROM Chat
        WHERE TIMEDIFF(LogTime, TIME()) < '00:10:00'')) {echo 'OK';} 
?>


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:48 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