![]() |
Suche FTP-Komponenten
Hallo
Ein Freund hat mir ein paar Beispiele für eine FTP Server und Client Anwendung. Allerdings für Delphi. Er benutzt dazu die ICS-Komponenten von Overbyte. Da ich aber mit Lazarus arbeite bräuchte ich vergleichbare Komponenten. Mein Projekt soll folgendes machen: Ein Client meldet sich beim Server an, welcher dann je nach Userdaten aus einer Datenbank eine Customized-Datei erstellt und dem Client zuschickt. Dieser kann ggf. auch eine Datei erzeugen und dem Server schicken, der den Inhalt dann in die Datenbank einpflegt. Grüße Phil |
AW: Suche FTP-Komponenten
|
AW: Suche FTP-Komponenten
Zitat:
Der Client stellt eine Anfrage zu einer Resource (Methode GET) und der Server anwortet. Oder der Client sendet selbst Daten (Methode POST oder PUT) und der Server speichert diese (meist in einer Datenbank). Das ist genau das Anwendungsszenario für einen Webserver. FTP ist eher ungeeignet weil auf der Serverseite kein Mechanismus existiert mit dem der Server feststellen können dass es eine neue Datei gibt und dass diese Datei auch komplett hochgeladen wurde. Ausserdem hat man mit FTP nur Ärger (FTP ist in vielen Firmen blockiert, FTP arbeitet nur schlecht oder gar nicht über Proxyserver, Probleme mit Unicode-Dateinamen,...). |
AW: Suche FTP-Komponenten
Auf Indy bin ich auch schon gestoßen, allerdings werde ich aus der Installationsanleitung nicht schlau:
Zitat:
Zitat:
|
AW: Suche FTP-Komponenten
Zitat:
Du willst abhängig von User ja Dateien erzeugen lassen. Hier nimmt man i.d.R. http(s) |
AW: Suche FTP-Komponenten
Zitat:
:wink: FTP ist auch besonders gut zur Übertragung von Benutzernamen und Passwort im Klartext geeignet |
AW: Suche FTP-Komponenten
Zitat:
Ich möchte meiner Anwendung die momentan beides macht einfach nur in zwei Anwendungen aufteilen und die Informationen, welcher User anfragt, und die Datei die zurückgeschickt wird nicht mehr von Form1 auf Form2 übertragen, sondern über eine FTP/HTTP/Bechertelefon-Komponente "Tunneln", damit die Aufgaben schöner getrennt sind. Ich rede nicht davon, einen eigenen (Hardware)-Server im Rechenzentrum zu verwenden, die Server-Anwendung läuft einfach dauerhaft auf einem Rechner im Netzwerk und wartet, ob eine Clientsoftware von einem anderen Rechner eine Datei haben möchte. P.S., habe Indy 10.2 Installiert bekommen, Lazarus und Komponenten dafür sind wirklich sowas von grottig dokumentiert... |
AW: Suche FTP-Komponenten
Zitat:
![]() |
AW: Suche FTP-Komponenten
Zitat:
|
AW: Suche FTP-Komponenten
Vielleicht nochmal iene etwas allgemeinere Frage: Die ganze Netzwerkerei ist Programmtechnisch neuland für mich. Mir ist das Schichtmodell klar und die Indykomponenten führe ich mir grade mittels Tutorials zu Gemüte.
Die Dateien die ich schicken möchte sind relativ kurze Textdateien, mit wenns mal viel wird vllt. 200 Zeilen. Es wird genau EINE Art Datei an den Client geschickt und der schickt genau EINE Art datei zurück. Dh das ganze ist sehr übersichtlich. Macht es da Eurer Meinung nach eher Sinn, sich selbst ein kleines Protokoll auszudenken, braucht ja nicht viel mehr als "ich bin derunderUser, schick mir meine Datei", "Danke, Erhalten" oder "Fehler". Die Strings kann man ja auch noch verschlüsseln für die Sicherheit. Oder lieber was vorhandenes Benutzen? Wenn ja, was würde sich da anbieten? Es soll nicht zu viel Overhang haben, soll ja eigentlich nur sehr wenig können. Freu mich auf Ideen! |
AW: Suche FTP-Komponenten
Zitat:
![]() Das reicht für deine Zwecke vollkommen aus. Die Anfrage könnte z.B. so aussehen:
Code:
In der Anfrage sind 2 Parameter (user und typ) enthalten.
GET /data.cgi?user=philharmony&typ=Artikel HTTP/1.1
Host: 192.168.1.45 Der Server antwortet dann etwa so:
Code:
An deiner Stelle würde ich einen "richtigen" Webserver wie z.B. Apache, nginx oder lighttpd verwenden.
HTTP/1.0 200 OK
Date: Fri, 31 Jan 2013 15:12:48 GMT Last-Modified: Fri, 31 Jan 2013 15:12:48 GMT Content-Language: de Content-Type: text/html; charset=utf-8 Content-Length: 793 Hier stehen die Nutzdaten deiner Datei bzw. Resource. Insgesamt stehen hier 793 Byte.... ... Die Datenaufbereitung übernimmt dann ein Delphi-Konsolenprogramm. Der Webserver ruft dann das Konsolenprogramm per CGI auf, bekommt die Daten aus dem Std-Output und sendet sie an den richtigen Client zurück. ![]() Du wirst einige Zeit brauchen um dich einzufuchsen, aber es lohnt sich. Man könnte den Delphi-Client sogar durch Webbrowser ersetzen oder ergänzend zulassen. Auf jeden Fall stehen so alle Wege offen. |
AW: Suche FTP-Komponenten
Zitat:
Anstatt des hochbetagten CGI (Stichwort: Resourcenverbrauch, hohe Antwortzeit wenn Initialisierungen erforderlich sind) würde ich hinter dem Apache dann aber eine Delphi HTTP Server Anwendung laufen lassen. Der Apache leitet die Requests dann durch, und die ständig laufende Delphi Anwendung beantwortet die Anfragen. |
AW: Suche FTP-Komponenten
Es wird extrem selten auf den Server zugegriffen, schätzungsweise 1 mal am Tag, dabei wird dann genau eine kleine Datei an den CLient geschickt, der u.U. später eine noch kleinere Date zurückschickt. Klein heißt in diesem Fall in der Größenordnung von max ein paar -zig bis hundert Zeilen Text.
Es soll nicht aus dem Internet zugegriffen werden und auch nicht per Browser oder sonst was. Es gibt einfach auf jedem PC eine Anwendung die diese Daten braucht und sie sich vom Server holt. Zur besseren Übersichtlichkeit soll dabei jeder User nur bestimmte Daten bekommen. Eine Datenbank würde auch gehen, ich habe aber bereits eine Anwendung die das ganze Datenhandling macht, daher möchte ich nicht alles neu machen. Im Prinzip würde ich soweit wie möglich einfach nur die Sinngemäß function LoadFile(User : TUser) : TMyFile durch die function GetFileFromServer(User : TUser) : TMyFile ersetzen, und die LoadFile-Funktion im Server unterbringen. Ich bin jetzt mehrfach auf die Indy-Komponenten gestoßen. Diese unterstützen OpenSSL. Ich würde das ganze doch per FTP machen, genauer mit FTPs. Dh die Datei soll einfach auf Anfrage verschlüsselt vom mini-Server an den Mini-Client geschickt werden und fertig. Es gibt sicherlich auch tausend andere möglichkeiten aber irgendwann muss ich mich mal für eine entscheiden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:21 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