Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Chat FTP Server (https://www.delphipraxis.net/67540-chat-ftp-server.html)

kaschte 16. Apr 2006 11:23


Chat FTP Server
 
Ich bin gerade daran einen Chat zu schreiben. Jetzt möchte ich aber, dass wenn man auf den Button connect drückt, dass dann der Nickname (der wird in einem Editfeld vorher angegeben) und die IP in eine Datei auf einem FTP Server geschrieben werden. Gleichzeitig soll in eine Listbox alle schon eingetragenen Nicknamen ausgegeben werden. Leider habe ich noch keinen blassen Schimmer wie ich das anstellen soll.

Ich bin übrigens noch n rechter Newbie in Delphi also bitte verständlich erklären.

fkerber 16. Apr 2006 11:29

Re: Chat FTP Server
 
Hallo!

... und Herzlich Willkommen in der DP.

Wenn du mal hier nach Hier im Forum suchenChat suchst, dann findest du sicherlich schon einige Beiträge und da stehen dann auch einige Tipps oder Quellcodes drin, wie man das macht.

Warum willst du gerade FTP nutzen?


Ciao Frederic

kaschte 16. Apr 2006 11:32

Re: Chat FTP Server
 
Ok mach ich nachher mal.

Warum FTP? Öhm naja ich hab Webspace auf nem FTP Server und dort möchte ich dann ne textdatei wo dann halt dieses Zeugs drinsteht.

fkerber 16. Apr 2006 11:39

Re: Chat FTP Server
 
Hi!

Wie gesagt, lies dir mal die anderen Beiträge durch, da steht dann so einiges über die Kommunikation zwischen den Partnern drin. Diese über FTP abzuwickeln erscheint mir nicht als sinnvoll, da es lange dauert und jede Partei die Zugangsdaten zu deinem FTP-Server bekommen müsste.


Ciao Frederic

ghost007 16. Apr 2006 11:46

Re: Chat FTP Server
 
Hi,
du kannst nachdem die datein eingegeben worden sind z.b. si an einen ListBox dran hängen:
Delphi-Quellcode:
ListBox1.Items.Add('IP');
ListBox1.Items.Add('Name');
und diese dann speichern:
Delphi-Quellcode:
ListBox1.Items.SaveToFile('user.txt');
und dann hochladen:
(du brauchst dafür die indy komponente idFTP)
Delphi-Quellcode:
idftp1.put('user.txt',dein ftp pfad,false);
Das runterladen gestalltet sich wie folgt:
Delphi-Quellcode:
idftp1.get(dein ftp pfad,'user.txt', true);
Und die dann heruntergeladene datei dann einfach wieder in die ListBox laden:
Delphi-Quellcode:
ListBox1.Items.LoadFromFile('user.txt');
Ist zwar mega umständlich, und wenn zu viele user gleichzeitig das verwenden, wirst du probleme bekommen, da dein webspace wahrscheinlich eine user begrenzung hat ...
P.S.
Du musst natürlich noch bevor du die datei uploaden bzw. downloaden kannst
im objectinspector in der IdFTP komponente deinen username und dein passwort und den host eintragen.
Und dann:
Delphi-Quellcode:
idftp1.connect;
machen bzw. nach dem transfer
Delphi-Quellcode:
idftp1.disconnect;

pacman1986 16. Apr 2006 11:48

Re: Chat FTP Server
 
das wird doch niemals funktionieren ist doch viel zu langsam oder ?

kaschte 16. Apr 2006 12:13

Re: Chat FTP Server
 
Also ist eigentlich eher ein Versuchsprojekt und wird wahrscheinlich später mit max. 4 Users oder so laufen.

Thx ghost werd ich gleich mal einbauen.

Edit: Kann man es nicht so gestalten, dass die Datei gar nicht erst rauf- oder runtergeladen werden muss, sondern dass man gleich die Datei auf dem Webspace ändern kann (also chmod rechte auf alle) und auslesen auch gleich vom webspace.

ghost007 16. Apr 2006 12:18

Re: Chat FTP Server
 
naja, kommt drauf an, wie viele user man hat bzw. wie groß die user.txt ist.
aber bei 4 usern sollte das recht flott gehen.

P.S.Wie schon gesagt, das mit dem ftp ist keine so gute lösung.
Wenn du ein Chatprogramm machen willst, ist das besser, wenn du eine TCP/IP verbindung aufbaust und nen server laufenlässt
Und jeder User geht als client auf den server.(das problem bei der lösung ist nur, wenn du einen PC nicht die ganze zeit an haben willst um den server zu machen brauchst du einen vServer oder so was in der richtung.)

ghost007 16. Apr 2006 12:19

Re: Chat FTP Server
 
das mit den ändern auf dem webspace, ob das überhaupt geht, hab ich keine ahnung, aber ich sehe das das problem, das ja dann amehrere gleichzeitig drauf sind, und wenn du nen free webspace hast, sind wahrscheuinlich maximal 1-2 user gleichzeitig erlaubt.

kaschte 16. Apr 2006 12:23

Re: Chat FTP Server
 
Naja, wäre nicht so n Problem, dass mit dem PC laufen lassen. Aber ich würde es trotzdem lieber über n FTP machen.

Also der FTP Server dient lediglich für eine Datei in der alle User die gerade on sind ink. Ip gespeichert werden. Sobald jemand disconnectet (Button in Programm) wird die Zeile wieder rausgelöscht. Alle Einträge werden in einer Listbox angezeigt. Durch auswählen eines Users wird man mit dem verbunden (das mit dem verbindungszeug habe ich).

Deshalb kann ich nicht4 ne Datei raufladen weil ja alle Einträge in einer Datei sein sollen.

kaschte 16. Apr 2006 12:24

Re: Chat FTP Server
 
Zitat:

Zitat von ghost007
das mit den ändern auf dem webspace, ob das überhaupt geht, hab ich keine ahnung, aber ich sehe das das problem, das ja dann amehrere gleichzeitig drauf sind, und wenn du nen free webspace hast, sind wahrscheuinlich maximal 1-2 user gleichzeitig erlaubt.

Jup, ich glaube 2 oder so dürfen max. in nehm FTP sein.

Deshalb möchte ich ja auch die Daten direkt auf dem Server ändern so dass man nicht über FTP ne Datei hochladen muss.

Edit: Das dann zBs. beim ListBox1.Items.LoadFromFile('user.txt'); Befehl anstatt user.txt die Adresse angegeben wird (hab ich bereits versucht, funzt ned).

ghost007 16. Apr 2006 12:27

Re: Chat FTP Server
 
jo, aber da hast du 2 probleme.
wenn alle user die datei ändern sollen, dann müssen sie ja auch connected sein, also von daher steht dir die userbegrenzung im weg.
Zitat:

Zitat von kaschte
Deshalb kann ich nicht4 ne Datei raufladen weil ja alle Einträge in einer Datei sein sollen.

Die Datei wird ja immer beim Upload durch die neue ersetzt.

kaschte 16. Apr 2006 12:30

Re: Chat FTP Server
 
Hm, hast recht.

Eben wird sie durch ne neue ersetzt und somit wird die Datei eines anderen der zuerst dort war gelöscht und der ist dann nicht mehr eingetragen.

Ne möglichkeit wäre vielleicht zuerst die Datei runterladen dann seine eigenen Daten dranhängen und dann wieder auf den Server.


EDIT: Und wegen der Userbegrenzung vielleicht sowas wie ne Warteschleife einbinden?

ghost007 16. Apr 2006 12:34

Re: Chat FTP Server
 
Zitat:

Zitat von kaschte
Ne möglichkeit wäre vielleicht zuerst die Datei runterladen dann seine eigenen Daten dranhängen und dann wieder auf den Server.

Genau so hab ich das gemeint, sry falls das net so rübergekommen ist.

Also, von ner warteschleife hab ich kp aber vll lässt sich feststellen wieviele user immoment connected sind, und dann falls 2 connected sind:
Delphi-Quellcode:
showmessage ('please try again in a few seconds');

fkerber 16. Apr 2006 12:35

Re: Chat FTP Server
 
Hi!

Das kann so nicht funktionieren. Stell dir vor, zwei Leute laden sich in etwa gleichzeitig die Datei runter, tragen sich ein und laden sie wieder hoch. Einer der beiden fehlt dann auf jeden Fall in der Datei.


Ciao Frederic

ghost007 16. Apr 2006 12:35

Re: Chat FTP Server
 
Dann musst du halt machen, dass sobald einer connected ist diese meldung kommt...

kaschte 16. Apr 2006 12:45

Re: Chat FTP Server
 
Zitat:

Zitat von ghost007
Zitat:

Zitat von kaschte
Ne möglichkeit wäre vielleicht zuerst die Datei runterladen dann seine eigenen Daten dranhängen und dann wieder auf den Server.

Genau so hab ich das gemeint, sry falls das net so rübergekommen ist.

Also, von ner warteschleife hab ich kp aber vll lässt sich feststellen wieviele user immoment connected sind, und dann falls 2 connected sind:
Delphi-Quellcode:
showmessage ('please try again in a few seconds');

Achso sorry. Werd dann mal nach ner Méglichkeit suchen.

Damit es nicht das Problem wie Federic schon sagte gibt, könnte man doch die Begrenzung auf einen stellen. Es ist ja e für so 4 Users oder so. Da ist das nicht weiter schlimm.

Ideen für etwas, dass die Useranzahl testet die etwas über FTP rauf unter runterladen oder einer Warteschlange, bin ich offen.

ghost007 16. Apr 2006 12:50

Re: Chat FTP Server
 
wenn es schon bei einem user etwas machen soll,
könntest du auch einfach schauen, ob auf deinem webspace traffic ist.
Wenn kein user -> kein traffic
Wenn user -> traffic

kaschte 16. Apr 2006 12:52

Re: Chat FTP Server
 
Hm, der Webspace wird vielleicht auch noch für was anderes genutzt und dann ist das nicht gerade die beste Lösung.

Aber trotzdem, wie hast du dir das vorgestellt?

ghost007 16. Apr 2006 12:55

Re: Chat FTP Server
 
1.wenn es ein free webspace ist, dann hol dir doch einfach einen neuen für das chat programm
2.bemüh dich mal um die suche

Ich wüsste ezz nicht auf anhieb, wie man das bewerkstelligen soll.
Ich will die auch keine lösung geben, nur denkeansätze.

sakura 16. Apr 2006 12:57

Re: Chat FTP Server
 
Hi kaschte,

eigentlich sollte es inzwischen klar sein, dass FTP keine Lösung für die Chat-Anmeldung ist. Unterstützt der Webspace evtl. PHP oder ASP? Wenn ja, dann investiere ein, zwei Tage in diese Skriptingsprachen und baue Dir damit eine Lösung. Diese wird auf jeden Fall viel zufriedenstellender funktionieren und weiterhin musst Du auch nicht die Passwörter des FTP Zugangs mitgeben (ob im Programm versteckt oder nicht, ist erst einmal egal).

...:cat:...

ghost007 16. Apr 2006 12:59

Re: Chat FTP Server
 
yep sakura hat vollkommen recht

kaschte 16. Apr 2006 13:00

Re: Chat FTP Server
 
Also php kann ich ein bisschen aber das Chatprogramm soll ja eher meine Programmierkenntnisse in Delphi ein bisschen erweitern. Es ist eher so ein "Was ist überhaupt möglich?" Projekt.

@ghost ok, ich schaue mal ob ich so n Traffic teil finde und wenn nicht melde ich mich wieder.
Natürlich bin ich über jeden Tipp froh. Thx nochmal an alle!

kaschte 16. Apr 2006 13:04

Re: Chat FTP Server
 
Beim Befehl idftp1.get(dein ftp pfad,'user.txt', true); wenn ich beim FTP Komponenten bereits den Pfad meines Servers angegeben habe, was muss ich dann dort angeben damit es ins Anfangsverzeichnis kopiert wird (also in keinen Ordner)?

ghost007 16. Apr 2006 13:10

Re: Chat FTP Server
 
wenn du es direkt auf den server haben willst dann '/' mehr nicht
wenn du es auf einen unterordner haben willst dann so '/unterordner/'

sakura 16. Apr 2006 13:20

Re: Chat FTP Server
 
Zitat:

Zitat von kaschte
Also php kann ich ein bisschen aber das Chatprogramm soll ja eher meine Programmierkenntnisse in Delphi ein bisschen erweitern. Es ist eher so ein "Was ist überhaupt möglich?" Projekt.

Das eine schließt das andere nicht aus. Ein Skript in PHP zu erstellen, welches die Clients speichert/zurückliefert ändert nichts daran, dass der Rest des Chats mit Delphi geschrieben wird. Ich wollte Dir nur nahe legen, die FTP-Idee zu begraben. FTP ist weder dafür geeignet, noch war eine solche Dinge überhaupt im Konzept dabei ;)

...:cat:...

kaschte 16. Apr 2006 18:24

Re: Chat FTP Server
 
Zitat:

Zitat von sakura
Zitat:

Zitat von kaschte
Also php kann ich ein bisschen aber das Chatprogramm soll ja eher meine Programmierkenntnisse in Delphi ein bisschen erweitern. Es ist eher so ein "Was ist überhaupt möglich?" Projekt.

Das eine schließt das andere nicht aus. Ein Skript in PHP zu erstellen, welches die Clients speichert/zurückliefert ändert nichts daran, dass der Rest des Chats mit Delphi geschrieben wird. Ich wollte Dir nur nahe legen, die FTP-Idee zu begraben. FTP ist weder dafür geeignet, noch war eine solche Dinge überhaupt im Konzept dabei ;)

...:cat:...

Hm, und wie könnte das ganze gehen??

fkerber 16. Apr 2006 18:35

Re: Chat FTP Server
 
Hi!

Du schreibst dir ein PHP-Script, dass die nötigen Änderungen an der Datei vornimmt und diese rufst du dann anstatt im Browser aus deinem Programm heraus auf (siehe Indy).
So sparst du dir z.B. die Preisgabe deines FTP-Passwortes.


Ciao Frederic

kaschte 16. Apr 2006 18:44

Re: Chat FTP Server
 
Also soll trotzdem eine txt datei existieren? Ich glaube, dass ist mir zu hoch mit PHP. Bin dort auch nicht gerade das Genie.

fkerber 16. Apr 2006 18:47

Re: Chat FTP Server
 
Hi!

Das bleibt ja dir überlassen, ob du diese Lösung mit der txt-Datei willst oder nicht.
Wenn du sie wolltest, wäre es nur definitiv besser, das ganze per HTTP und dann eben PHP und nicht über FTP zu lösen.

Zu PHP findet man mit Google einige gute Dokumentationen, auch für Einsteiger.


Ciao Frederic

kaschte 17. Apr 2006 08:52

Re: Chat FTP Server
 
Naja ich habe sonst nicht gerade einen Plan was für Alternativen es gibt.

Aber zurück zu PHP. Könnte das ganze irgendwie mit HTTP Post und dann fwrite funktionieren? Nur wie übergibt dann das Programm der PHP Datei die HTTP Post daten??

fkerber 17. Apr 2006 08:56

Re: Chat FTP Server
 
Hi!

Ja, deine Richtung stimmt grob.
Wie gesagt, schau dir mal andere Chats hier an (vor allem auch mal die dezentralen) und was PHP angeht, kann ich nur nochmal Google empfehlen. Da findest du recht gute Seiten...


Ciao Frederic

kaschte 17. Apr 2006 09:08

Re: Chat FTP Server
 
Hab jetzt mal hier im Forum was gefunden, dass etwa meinen Wünschen entspricht.

Hab da mal n Beispiel, dass mit idhttp (Indykomponent) funktionieren soll.

Fragen:

Bei parameter.Add('username=.....') und bei password, sind das die paramter die dann zBs. irgendwie so erwartet werden?
$_POST["username"];

Sorry aber bin n bisschen aus der Übung. Also parameter.Add sind dann also die HTTP Post daten? Oder sind das sont irgendwelche parameter?? :?:

Delphi-Quellcode:
var idhttp1: TIdhttp;
    parameter: TStringlist;
begin
  idhttp1 := TIdhttp.Create(nil);
  parameter.Add('username=UsernameDenManImBrowserEingebenWürde');
  parameter.Add('password=PasswortDasManImBrowserEingebenWürde');
  idhttp1.Post('http://xxyz', parameter);
  idhttp1.Free;
end;

kaschte 17. Apr 2006 09:11

Re: Chat FTP Server
 
Hab hier auch noch was gefunden, werde beide wenn ich Zeit habe mal testen.

Delphi-Quellcode:
const
  url = 'http://localhost/torud.php';

procedure TDemoForm.PostButtonClick(Sender: TObject);
var
  params: TStrings;
begin
  params := TStringList.Create;
  params.Values['a'] := 'aaa';
  params.Values['b'] := 'bbb';
  Memo.Lines.Text := idHTTP.Post(url, params);
  params.free;
end;

fkerber 17. Apr 2006 09:17

Re: Chat FTP Server
 
Hi!

Vorab:
Du kannst deine Beiträge editieren, solche Doppelposts sind eher ungern gehen.

Zu den Quelltexten:
So wie ich das sehe, machen die doch beide das selbe, oder?
Allerdings sind die so direkt nicht lauffähig (Variablentypen stimmen anscheinend nicht so richtig, Stringlist nicht created etc.), aber die Richtung stimmt.

Und ja, da müsstest du dann mit $_POST['variablenname'] drankommen.


Ciao Frederic

kaschte 17. Apr 2006 09:19

Re: Chat FTP Server
 
Sorry wegen den vielen Posts.

Ok werd ich dann mal ausprobieren.

kaschte 17. Apr 2006 10:33

Re: Chat FTP Server
 
Zitat:

Zitat von fkerber
Hi!

Vorab:
Du kannst deine Beiträge editieren, solche Doppelposts sind eher ungern gehen.

Zu den Quelltexten:
So wie ich das sehe, machen die doch beide das selbe, oder?
Allerdings sind die so direkt nicht lauffähig (Variablentypen stimmen anscheinend nicht so richtig, Stringlist nicht created etc.), aber die Richtung stimmt.

Und ja, da müsstest du dann mit $_POST['variablenname'] drankommen.


Ciao Frederic

Wie kann ich so eine Stringlist createn weil wenn ich es compiliere kommt immer die Meldung "W1036 Variable 'parameter' ist möglicherweise nicht initialisiert worden"


EDIT: Hier mal der PHP Quelltext:

Delphi-Quellcode:
<?
$inhalt = $_POST['nickname'] $_POST['ip'];
$filename = 'users.txt';
$handle = fopen($filename, "a")
fwrite($handle, $inhalt);
fclose($handle);
?>

fkerber 17. Apr 2006 10:37

Re: Chat FTP Server
 
Hi!

Im zweiten Quelltext steht das drin:
Delphi-Quellcode:
Parameter:=TStringlist.Create;
Du solltest allerdings die Zugriffe mit try...finally absichern.


Ciao Frederic

kaschte 17. Apr 2006 10:53

Re: Chat FTP Server
 
Zitat:

Zitat von fkerber
Hi!

Im zweiten Quelltext steht das drin:
Delphi-Quellcode:
Parameter:=TStringlist.Create;
Du solltest allerdings die Zugriffe mit try...finally absichern.


Ciao Frederic

Also parameter.....create; habe ich hinzugefügt beim ersten.

Wenn ich mich jetzt eintragen will kommt Socket Error ..... Host not found.

fkerber 17. Apr 2006 10:59

Re: Chat FTP Server
 
Hi!

Du versuchst dann wohl auf die (Internet-)Adresse "http://xxyy" oder so zuzugreifen. Klar, dass das nicht geht. Hier müsste dann die Adresse zu deiner PHP-Datei auf deinem Webserver hin.


Ciao Frederic


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 Uhr.
Seite 1 von 2  1 2      

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