Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi FTP ohne Indy? (https://www.delphipraxis.net/56239-ftp-ohne-indy.html)

masterchris_99 2. Nov 2005 17:36


FTP ohne Indy?
 
Moin,

Ich weiss Indy ist geil, toll und einfach das problem was ich habe ist das ich leider nur delphi 6 habe und da das mit indy net rundläuft und bevor ich jetzt wild rumupdate wollte ich fragen ob es noch eine andere möglichkeit gibt mit einem ftp zu kommunizieren ich weill einfach nur eine datei hochladen und ggf. überschreiben, mehr nicht.

mFg CHris

ripper8472 2. Nov 2005 17:53

Re: FTP ohne Indy?
 
alles zu fuss.

kontrollverbindung aufbauen, einloggen, transfer initiieren, datenverbindung aufbauen, senden, schliessen.

rfc 959 hat die doku

masterchris_99 2. Nov 2005 18:02

Re: FTP ohne Indy?
 
hmm fertige schnippel gibt es nicht?

marabu 2. Nov 2005 18:03

Re: FTP ohne Indy?
 
Herzlich willkommen in der Delphi-PRAXiS, Chris.

Ich würde versuchen einen FTP Client auf der WinInet Library aufzusetzen. In der DP oder in Google solltest du einiges dazu finden.

Grüße vom marabu

ripper8472 2. Nov 2005 18:09

Re: FTP ohne Indy?
 
marabu: was kann diese "wininet" library, dass du sie empfiehlst? reichen nicht einfach sockets? ist das nicht das gleiche?

marabu 2. Nov 2005 18:51

Re: FTP ohne Indy?
 
Hallo Christoph,

WinInet kann vieles, was mit den Sockets und dem RFC erst mühsam aufgebaut werden müsste. Nur um die für FTP relevanten Funktionen zu nennen:
  • FtpCommand()
  • FtpCreateDirectory()
  • FtpDeleteFile()
  • FtpFindFirstFile()
  • FtpGetCurrentDirectory()
  • FtpGetFile()
  • FtpOpenFile()
  • FtpPutFile()
  • FtpRemoveDirectory()
  • FtpRenameFile()
  • FtpSetCurrentDirectory()
  • FtpGetFileSize()
Freundliche Grüße vom marabu

ripper8472 2. Nov 2005 19:12

Re: FTP ohne Indy?
 
heh, lohnt sich. ich haett ja sonst libcurl vorgeschlagen, aber das wirds wohl nicht fuer delphi geben.

Union 2. Nov 2005 19:15

Re: FTP ohne Indy?
 
Der Nachteil an der WinInet ist nur, dass diese im IE integriert ist.

marabu 2. Nov 2005 19:35

Re: FTP ohne Indy?
 
Der Internet Explorer ist eine GUI Anwendung, die sich auf die Funktionalität von WININET, MSHTML, MSXML und einigen anderen Bibliotheken stützt. Das gleiche kann jedes andere Programm tun - auch deines. Was also ist der tiefere Sinn deiner Aussage?

Nachdenkliche Grüße vom marabu

Union 2. Nov 2005 19:38

Re: FTP ohne Indy?
 
Zitat:

Zitat von marabu
Der Internet Explorer ist eine GUI Anwendung, die sich auf die Funktionalität von WININET, MSHTML, MSXML und einigen anderen Bibliotheken stützt. Das gleiche kann jedes andere Programm tun - auch deines. Was also ist der tiefere Sinn deiner Aussage?

Nachdenkliche Grüße vom marabu

Naja, es gibt ja so viele Wahnsinnige, die anstelle IE Opera, FireFox etc. einsetzen und den IE nicht mehr updaten. Dann ist die Funktionalität der WinINet evtl. nicht mehr gegeben. Mir ging es dabei nur um Kompatibilität unter allen Umständen. Selber setze ich die auch ein... Aber bei meinen Anwendern kann ich die Bedingungen vorschreiben.

Luckie 2. Nov 2005 20:35

Re: FTP ohne Indy?
 
Die WinInet API Funktionen gehören zur API. Sie sind unabhängig vom installierten Brwoser.. Jeder FTP-Client setzt auf sie auf egal, was für eine Kapselung (Indy) verwendet wird.

Und hier http://www.luckie-online.de/Developer/Delphi/Programme/ gibt es einen nonVCL FTP-Client -> FTP-Client (29 kb).

ripper8472 2. Nov 2005 20:49

Re: FTP ohne Indy?
 
Zitat:

Zitat von Luckie
Jeder FTP-Client setzt auf sie auf egal, was für eine Kapselung (Indy) verwendet wird.

gefaehrliche verallgemeinerung... flashfxp z.b. scheint das selber zu machen.

Luckie 2. Nov 2005 20:52

Re: FTP ohne Indy?
 
Und wie? Am Ende müssen immer irgendwelche API Funktionen von Windows stehen. Wenn sich die Entwickler natürlcih die Arbeit gemacht haben mit RawSockest zu arbeiten, dann war das ihre Entscheidung, aber auch da stehen am Ende wieder Windows API Funktionen.

ripper8472 2. Nov 2005 21:08

Re: FTP ohne Indy?
 
stimmt, aber sie benutzen nicht die ftpfunktionen von wininet.

soweit ich die wininet doku verstanden habe, fallen raw sockets oder normales socket() nicht unter wininet, sondern unter winsock!

sECuRE 2. Nov 2005 21:30

Re: FTP ohne Indy?
 
Hi,

FlashFXP benutzt die Winsock.dll (beim Start wird auch deren Version angezeigt). Sockets werden (soweit ich weiß) selbst aufgebaut, der SSL-Code ist aber mit 100%iger Sicherheit selbstgeschrieben, darauf hab ich den Entwickler mal angesprochen.

cu

Net7 2. Nov 2005 22:08

Re: FTP ohne Indy?
 
Hmm ... warum alles so schwer machen.
Wie ripper8472 schon sagte... "mach es zu Fuß".
also..

Mit FTP kommunizieren ist simpel.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
clientsocket1.Active:=true;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
clientsocket1.Active:=false;
end;

procedure TForm1.ClientSocket1Read(Sender: TObject;
  Socket: TCustomWinSocket);
var
test:string;
begin
       test:=clientsocket1.Socket.ReceiveText;
        memo1.Lines.Add(test);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
nachricht:string;
begin

        nachricht:=edit1.Text+char(13);
        edit1.Clear;
        clientsocket1.Socket.SendText(nachricht);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  edit1.Clear;
end;

end.
dazu noch etwas davon

FTP Funktionen

und schon kanns losgehen. :wink:

//edit und das mit "Sockets"

masterchris_99 3. Nov 2005 06:32

Re: FTP ohne Indy?
 
also ich hab jetzt einfach diesen code-schnippel hier genommen mit dem geht es sehr sehr gut und auch schnell.

Delphi-Quellcode:
function PutFile(Server, Port, UserName, Password, LocalFile, RemoteFile: String): Boolean;
var
  InternetOpn: hInternet;
  InternetCon: hInternet;
begin
  InternetOpn := InternetOpen('iexplore', INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  InternetCon := InternetConnect(InternetOpn,
                                 PChar(Server),        // FTP Server
                                 StrToInt(Port),       // FTP Port
                                 PChar(Username),      // FTP UserName
                                 PChar(Password),      // FTP Password
                                 INTERNET_SERVICE_FTP, // dwService
                                 INTERNET_FLAG_PASSIVE, // dwFlags
                                 0);                   // dwContext
  Result := FtpPutFile(InternetCon,
             pChar(LocalFile),                         // LocalFile
             pChar(RemoteFile),                        // RemoteFile
             FTP_TRANSFER_TYPE_UNKNOWN,                // dwFlags
             0);                                       // dwContext
  InternetCloseHandle(InternetOpn);
end;
mFg Chris

alzaimar 3. Nov 2005 06:38

Re: FTP ohne Indy?
 
www.overbyte.be und da die ICS downloaden. Ist so gut wie Indy, oder sogar besser. Schnell, kompakt, klein, ohne Firlefanz. Äh... und umsonst. Und Freeware.

Net7 3. Nov 2005 13:19

Re: FTP ohne Indy?
 
Zitat:

Zitat von alzaimar
www.overbyte.be und da die ICS downloaden. Ist so gut wie Indy, oder sogar besser. Schnell, kompakt, klein, ohne Firlefanz. Äh... und umsonst. Und Freeware.

Da das nenne ich ja mal gelungene Komponenten. Quellcode ist super dokumentiert und übersichtlich, also die verstehen ihr Handwerk.


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