![]() |
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. |
Re: Chat FTP Server
Hallo!
... und Herzlich Willkommen in der DP. Wenn du mal hier nach ![]() Warum willst du gerade FTP nutzen? Ciao Frederic |
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. |
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 |
Re: Chat FTP Server
Hi,
du kannst nachdem die datein eingegeben worden sind z.b. si an einen ListBox dran hängen:
Delphi-Quellcode:
und diese dann speichern:
ListBox1.Items.Add('IP');
ListBox1.Items.Add('Name');
Delphi-Quellcode:
und dann hochladen:
ListBox1.Items.SaveToFile('user.txt');
(du brauchst dafür die indy komponente idFTP)
Delphi-Quellcode:
Das runterladen gestalltet sich wie folgt:
idftp1.put('user.txt',dein ftp pfad,false);
Delphi-Quellcode:
Und die dann heruntergeladene datei dann einfach wieder in die ListBox laden:
idftp1.get(dein ftp pfad,'user.txt', true);
Delphi-Quellcode:
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 ...
ListBox1.Items.LoadFromFile('user.txt');
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:
machen bzw. nach dem transfer
idftp1.connect;
Delphi-Quellcode:
idftp1.disconnect;
|
Re: Chat FTP Server
das wird doch niemals funktionieren ist doch viel zu langsam oder ?
|
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. |
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.) |
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.
|
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. |
Re: Chat FTP Server
Zitat:
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). |
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:
|
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? |
Re: Chat FTP Server
Zitat:
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');
|
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 |
Re: Chat FTP Server
Dann musst du halt machen, dass sobald einer connected ist diese meldung kommt...
|
Re: Chat FTP Server
Zitat:
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. |
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 |
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? |
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. |
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:... |
Re: Chat FTP Server
yep sakura hat vollkommen recht
|
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! |
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)?
|
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/' |
Re: Chat FTP Server
Zitat:
...:cat:... |
Re: Chat FTP Server
Zitat:
|
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 |
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.
|
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 |
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?? |
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 |
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; |
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; |
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 |
Re: Chat FTP Server
Sorry wegen den vielen Posts.
Ok werd ich dann mal ausprobieren. |
Re: Chat FTP Server
Zitat:
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); ?> |
Re: Chat FTP Server
Hi!
Im zweiten Quelltext steht das drin:
Delphi-Quellcode:
Du solltest allerdings die Zugriffe mit try...finally absichern.
Parameter:=TStringlist.Create;
Ciao Frederic |
Re: Chat FTP Server
Zitat:
Wenn ich mich jetzt eintragen will kommt Socket Error ..... Host not found. |
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 13:56 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