HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

FTP protokoll megvalósítása


Példaprogram letöltése

9606 bájt

Ha szükségünk lenne FTP műveletek elvégzésére programból, akkor nem árt egy olyan osztályt létrehoznunk, mely megvalósítja ezeket a funkciókat. Mivel a .NET Framework-ből - jelenleg még - hiányoznak ezek az osztályok, így az FTP-t, POP3-at, stb. magunknak kell leprogramoznunk, igaz csak egyszer.

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);
          ...
      }

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2002 évkönyv 556. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |