Az FTPClass osztályban valósítjuk meg azt a két legszükségesebb függvényt, melyekre az FTP használatakor szükségünk lehet. A GetFtpFile függvénnyel letölthetünk egy állományt az FTP szerverről, míg a PutFtpFile függvénnyel feltölthetünk egyet rá.
Mind a két függvénynek hasonló a paraméterezése: az FTPServer paraméterben a FTP szerver nevét, vagy IP címét kell megadnunk. A User és Password paraméterekben egy olyan felhasználói név és jelszó megadására van szükség, mellyel az adott szervert elérhetjük. A RemoteFile paraméterben a szerveren lévő, vagy épp oda másolandó állomány nevét, elérési úttal kell megadnunk, míg a LocalFile paraméterben a helyi állományt. A Text paraméter akkor legyen igaz, ha a kezelendő állomány szöveges formátumú.
public static void GetFtpFile(string FTPServer, string User, string Password, string RemoteFile, string LocalFile, bool Text)
{
Állomány letöltéshez előbb megnyitunk egy internet kapcsolatot az InternetOpen függvény felhasználásával.
hInternet = Win32.InternetOpen(0, 1, 0, "", 0);
ProcessError("InternetOpen failed");
if (hInternet != 0)
{
uint Context = 0;
Ha ez sikeres volt, akkor az InternetConnect felhasználásával kapcsolatot teremtünk az FTP szerverrel.
hInternet = Win32.InternetConnect(hInternet, FTPServer, 21, User, Password, 1, 0, ref Context);
ProcessError("InternetConnect failed");
if (hInternet != 0)
{
Ha ez is megvan, akkor jöhet az állomány letöltése, melyhez az FtpGetFile függvényt használjuk fel.
int status = Win32.FtpGetFile(hInternet, RemoteFile, LocalFile, 0, 0, (uint) (Text ? 0x00000001 : 0x00000002), ref Context);
ProcessError("FtpGetFile failed");
if (status == 0)
{
Végül már csak zárnunk kell a megnyitott internet kapcsolatot.
Win32.InternetCloseHandle(hInternet);
throw new Exception("Cannot download " + RemoteFile + " to " + LocalFile);
...
}
A letöltéshez nagyban hasonlít a feltöltés végrehajtási módja is.
public static void PutFtpFile(string FTPServer, string User, string Password, string LocalFile, string RemoteFile, bool Text)
{
A megnyitott internet kapcsolat után az FTP szerverhez kapcsolódunk.
hInternet = Win32.InternetOpen(0, 1, 0, "", 0);
ProcessError("InternetOpen failed");
if (hInternet != 0)
{
uint Context = 0;
hInternet = Win32.InternetConnect(hInternet, FTPServer, 21, User, Password, 1, 0, ref Context);
ProcessError("InternetConnect failed");
if (hInternet != 0)
{
Sikeres kapcsolatfelvétel esetén az FtpPutFile függvényt használva elvégezhető a választott állomány feltöltése.
bool status = Win32.FtpPutFile(hInternet, LocalFile, RemoteFile, 0, ref Context);
ProcessError("FtpPutFile failed");
if (!status)
{
Végül ez esetben is zárjuk a kapcsolatot.
Win32.InternetCloseHandle(hInternet);
throw new Exception("Cannot upload " + LocalFile + " to " + RemoteFile);
...
}