Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [C#] FTP - połączenie i transfer plików
Forum PHP.pl > Inne > Hydepark
tiraeth
Serii C# ciąg dalszy smile.gif Chcę wykorzystać protokuł FTP do przesyłania plików na serwer ale nie wiem jakiej klasy mam użyć do tego. Fajnie, jakby jeszcze można było pokazać pasek postępu, jeżeli ktoś wie jakiej klasy mam użyć do obsługi FTP w C# to proszę o pomoc smile.gif
hwao
http://www.codeproject.com/csharp/C__FTP_client.asp
http://www.csharphelp.com/archives/archive9.html

Ftp mozesz zrobic na socket'ach smile.gif w sumie zostal opracowany "analogicznie" do http smile.gif badz tez uzyc gotowych klas
tiraeth
A mógłbyś mi wytłumaczyć jak używać tych socketów, albo podać jakieś linki (najlepiej PL) do artykułów na temat socketów w C# ? smile.gif Jestem zielony haha.gif
hwao
@tiraeth zapytaj Ace na ircu on ostnio pisal na socket'ach w c#

Wszytko masz w necie pozatym smile.gif
tiraeth
Dobra, napisałem coś takiego:

Kod
    public class FTPClient
    {
        Socket _ftpSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        string _ftpHost = "";
        int    _ftpPort = 21;           // Default FTP port
        IPHostEntry _ftpHostEntry;

        byte[] inBuf = new byte[32 * 1024];
        int    inLen;

        public string Connect(string host, int port)
        {
            // Setting host/port
            _ftpHost = host;
            _ftpPort = port;
            _ftpHostEntry = Dns.GetHostEntry(_ftpHost);

            // Connecting to FTP Server
            _ftpSocket.Connect(new IPEndPoint(_ftpHostEntry.AddressList[0], _ftpPort));

            inLen = _ftpSocket.Receive(inBuf);
            return Encoding.ASCII.GetString(inBuf, 0, inLen); // Return CONNECT string
        }

        public string Login(string user, string password)
        {
            string retString = "";

            // Logon user to server
            _ftpSocket.Send(Encoding.ASCII.GetBytes("USER " + user + "\r\n"));
            retString = "Client: USER + " + user + "\r\n";

            inLen = _ftpSocket.Receive(inBuf);
            retString += "Server: " + Encoding.ASCII.GetString(inBuf, 0, inLen);

            _ftpSocket.Send(Encoding.ASCII.GetBytes("PASS " + password + "\r\n"));
            retString += "Client: PASS + " + password + "\r\n";

            inLen = _ftpSocket.Receive(inBuf);
            retString += "Server: " + Encoding.ASCII.GetString(inBuf, 0, inLen);

            return retString;
        }
    }


Działa smile.gif Więc już wszystko będzie wporządku, chciałbym jeszcze tylko wiedzieć jak mogę uzupełniać TextBox w czasie wykonywania połączenia, tzn. połączony to niech wypisze to "220..." i niech czeka na odpowiedź od serwera przy Login() i dopiero po otrzymaniu odpowiedzi doda to TextBoxa kolejne linijki smile.gif
Radarek
Kazda kontrolka ma wlasciwosc Text. Mozesz ja zmieniac i bedzie to widoczne na kontrolce (oczywiscie w zaleznosci od tego czym jest, ale dla TextBox dziala). Jesli zmiany nie beda widoczne to zdaje sie wywolaj metode Refresh() na kontrolce, zeby sie przerysowala.
tiraeth
Dzięki działa biggrin.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.