Makale Özeti

Uzun bir aradan sonra tekrardan merhaba arkadaşlar :) Bu makalemizde özellikle web uygulamaları geliştirenlerin işine yarayacak c# ile basitçe bir FTP Client programının nasıl geliştirildiğini anlatacağım.

Makale


FTP 

FTP (File Transfer Protocol) Internete bağlı bir bilgisayardan diğerine (her iki yönde de) dosya aktarımı yapmak için geliştirilen bir internet protokolü ve bu işi yapan uygulama programlarına verilen genel addır. İlk geliştirilen internet protokollerinden biridir. FTP protokolü ile bir başka bilgisayardan bir başka bilgisayara dosya aktarımı yapılırken, o bilgisayar ile etkileşimli-aynı anda (on-line) bağlantı kurulur ve protokol ile sağlanan bir dizi komutlar yardımıyla iki bilgisayar arasında dosya alma/gönderme işlemleri yapılır.

Bir web projesi yada web sitesi yaptığımızda bunu yayınlamak  için bir FTP programına ihtiyaç duyarız. Bunu nasıl yaparız? FTP programını açar, ftp bilgilerimiz ile ftp’ye bağlanır ilgili dosyaları ftp alanına transfer ederiz.



FTP kullanımı sadece bununla da sınırlı değildir elbette. Örneğin kendi sistemimiz üzerinden (bu bir winform uygulaması olabilir) web sitemize içerik girmemiz gerektiğinde ilgili içeriğe bir dosya eklemek istediğimizde işimizi çok kolaylaştıracak bir yöntemdir.

.Net Framework da bu işi FtpWebRequest classı ile yaparız. Şimdi kısaca bu classı tanıyalım.

FtpWebRequest

Framework 2.0 içersinde FTP ile çalışmamızı sağlayan yeni bir class eklendi. Bu classın adı FtpWebRequest. Bu class System.net namespace’si altında bulunmaktadır.  Webclient sınıfını kullanarak uzaktaki bir sunucudan FTP’ye bağlanarak bir dosya indirebilir yada sunucuya bir dosya yükleyebiliriz.

ÖRNEK

Biz bu uygulamamızda kendi uygulamamız üzerinden bir ftp’ye bağlanıp FTP’ye bir dosya upload edip yine FTP’en kendi makinemize bir dosya download edeceğiz.

İlk olarak yeni bir windows projesi oluşturalım;

Formumuz üzerine 2 buton ekleyelim. İlk butona bastığımızda upload işlemini gerçekleştirecek. Diğer butonda FTP’den dosya indirmemizi sağlayacak. Benim hazırlamış olduğum form aşağıdaki gibidir.



İlk olarak FTP’ye bağlanarak bir dosya indirelim. Bunun için gerekli kodları yazmaya başlayalım;

FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www.xxxxxx.com/xxx/sem.swf");

 

//Sunucu ile haberleşecek bir FtpWebRequest  objesi yarattık. Şimdi bu obje için login olmak için gerekli bilgilerini oluşturalım.

 

            request.Credentials = new NetworkCredential("xxxxx", "xxxxx");

 

            using (FtpWebResponse response = (FtpWebResponse)request.GetResponse())

            {

                Stream data = response.GetResponseStream();

                string targetPath = "C:/sem.swf";//Local makinedeki dosyanın tam yolunu belirtelim

                if (File.Exists(targetPath)) // Dosya varsa sil…

                    File.Delete(targetPath);

 

                byte[] byteBuffer = new byte[4096];

 

// Dosyayı loacal makinemize aktarıyoruz

 

                using (FileStream output = new FileStream(targetPath, FileMode.CreateNew))

                {

                    int bytesRead = 0;

                    do

                    {

                        bytesRead = data.Read(byteBuffer, 0, byteBuffer.Length);

                        if (bytesRead > 0)

                        {

                            output.Write(byteBuffer, 0, bytesRead);

                        }

                    }

                    while (bytesRead > 0);

                }

            }

 

FTP’den dosyayı indirme işlemini tamamladık. Şimdi de sunucuya bir dosya yükleyelim. Bunun için gerekli kodlar;

            FtpWebRequest request = (FtpWebRequest)WebRequest.Create("ftp://www. xxxxxx.com/xx/sem.jpg"); // FTP’den indireceğimiz dosyayı belirtiyoruz…

            request.Method = WebRequestMethods.Ftp.UploadFile;

 

            request.Credentials = new NetworkCredential("xxxxx ", " xxxxx ");

 

            //  Login olmak için gerekli bilgilerini oluşturalım.

            StreamReader sourceStream = new StreamReader("c:/sem.jpg");

            byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());

            sourceStream.Close();

            request.ContentLength = fileContents.Length;

 

            Stream requestStream = request.GetRequestStream();

            requestStream.Write(fileContents, 0, fileContents.Length);

            requestStream.Close();

 

Upload işlemimiz de bu kadar. Şimdi bu yaptıklarımızı test edelim ;) İlk Olarak Yükle butonuna tıklayalım;



FTP’ye bağlanalım, bakalım upload işlemini gerçekleştirmişmi?



Evet Sem.jpg isimli dosya sunucu da artık
J Şimdi hemen altındaki sem.swf isimli dosyayı Bilgisayarımıza indirelim. Bunun için indir butonuna tıklayalım.



Sonucu görmek için C: sürücüsüne bakalım;



Evet sem.swf’yi bilgisayarımıza indirdik. Gerçekten güzel ve işe yarayacak bir class’mış
J

Bu makalenin de sonuna geldik, başka bir makalede görüşmek üzere başarı ve iyi günler dilerim.

Sem GÖKSU
MCP | MCAD.NET | MCTS

Örnek Kodlar için mail adresimi kullanabilirsiniz

sem.goksu@yazilimgunlugu.com
www.yazilimgunlugu.com

Kaynaklar

http://msdn.com