none
Network Programlama RRS feed

  • Soru

  • Arkdaşlar Herkese Merhaba;

    Network Mantığı İle Çalışan Bir Sohbet Programı Üzerinden Dosya Aktarımı Hakkında Fikirlerinizi Bekliyorum.

    28 Kasım 2012 Çarşamba 10:04

Yanıtlar

  • Kusura bakma sorunu tam okumadan cevap vermişim.. Hocam şuna bakabilirsiniz..

    http://innodesign.over-blog.com/article-file-transfer-using-c-53823615.html

    28 Kasım 2012 Çarşamba 10:50
  • Eski yazdığım bir kodu paylaşayım anlamdığın yer olursa sorabilirsin

    özetliyecek olursam farklı değerler yollanacağı için örnek ses,görüntü bu yüzden yollanacak byte'in başına bir karşı tarafda çözümleme yapabileceğin bir şey koymalısın

    ben   mesela dosya yollarken dosyamın başına bu komutu yazıyorum [~(09)~] ve byte çevirip dosya ile birleştirdim ardında karşı tarfta 8 byte lik veriyi okuyup stringe çeviriyorum eğer bu  [~(09)~] ise dosya geldi demek başdaki 8 byte sonraki kalan byte dosyamdır       

        string s = Encoding.GetEncoding(1254).GetString(GelenBayt, 0, 8);

       public void DosyaGonder()
            {
                try
                {
                    if (!String.IsNullOrEmpty(DosyaAdi))
                    {
                        string sr = string.Empty;
                        if (treeView1.SelectedNode.Index != 0)
                            sr = treeView1.SelectedNode.FullPath + "\\" + Path.GetFileName(DosyaAdi);
    
                        else sr = treeView1.SelectedNode.Text + "\\" + Path.GetFileName(DosyaAdi);
                        if (DosyaAdi != null & DosyaAdi != "")
                        {
                            byte[] Dizi = WeBCeTeSİ_Yardımcı.Dosyayı_BytaDonustur(DosyaAdi);
                            byte[] Komut = Encoding.GetEncoding(1254).GetBytes("[~(09)~]");
                            byte[] Boyut = Encoding.GetEncoding(1254).GetBytes(sr.Length.ToString());
                            byte[] SonKomut = Encoding.GetEncoding(1254).GetBytes(sr);
                            byte[] Birlestir = new byte[Komut.Length + Boyut.Length + Dizi.Length + SonKomut.Length];
    
                            Array.Copy(Komut, 0, Birlestir, 0, Komut.Length);
                            Array.Copy(Boyut, 0, Birlestir, Komut.Length, Boyut.Length);
                            Array.Copy(Dizi, 0, Birlestir, Komut.Length + Boyut.Length, Dizi.Length);
                            Array.Copy(SonKomut, 0, Birlestir, Komut.Length + Boyut.Length + Dizi.Length, SonKomut.Length);
                            int s = Birlestir.Length;
                            WeBCeTeSİ_Yardımcı.IstekYolla(Birlestir, this.Text.Split('(')[0].Trim());
                            DosyaAdi = String.Empty;
                        }
                    }
                }
                catch (Exception) { }
            }

      else if (s.Equals("[~(09)~]"))
                    {
                        string karakter = Encoding.GetEncoding(1254).GetString(GelenBayt, 8, 2);
                        int d = Int32.Parse(karakter);
                        string DosyanınAdıVeYolu = Encoding.GetEncoding(1254).GetString(GelenBayt, BaytMiktarı - d, d);
                        if (DosyanınAdıVeYolu.Contains("~x~"))
                        {
                            DosyanınAdıVeYolu = DosyanınAdıVeYolu.Replace("~x~", "");
                            DosyanınAdıVeYolu = DosyanınAdıVeYolu.Insert(0, @"C:\Users\\" + Environment.UserName + "\\Desktop\\");
                        }
    
                        byte[] dos = new byte[(BaytMiktarı - 8) - d - DosyanınAdıVeYolu.Length];
    
                        using (FileStream dosya = new FileStream(DosyanınAdıVeYolu, FileMode.Create))
                        {
                            try
                            {
                                Array.Copy(GelenBayt, 10, dos, 0, dos.Length);
                                dosya.Write(dos, 0, dos.Length);
                                dosya.Flush();
                                dosya.Close();
                            }
                            finally { dosya.Close(); dosya.Dispose(); }
                        }
                    }
                    #endregion

    29 Kasım 2012 Perşembe 19:01

Tüm Yanıtlar

  • İlk önce Chat serveri kurmak için vds alman lazım..

    Daha sonra genelde vds'lerde sabit ip olur. tcp-socketleri sayesinde kullanıcılar senin vds ip'ine bağlanıp ordaki ana programına bağlantı sağlayacaklar.

    Aşağıda linkte bunla ilgili anlatım var : http://www.yazgelistir.com/makale/csharp-ile-tcp-socketleri-uzerine-bir-chat-uygulamasi

    • Yanıt Olarak Öneren AtknUludag 28 Kasım 2012 Çarşamba 10:39
    • Yanıt Önerisini Geri Alan AtknUludag 28 Kasım 2012 Çarşamba 10:52
    28 Kasım 2012 Çarşamba 10:38
  • Hocam O ddiğin Olay Tamam Onda Sorun Yok Serverde İp Sabit Clientlar Servere Bağlanıp Yazışma Yapıyorlar onda sorunum Yok Client Arayüzlerinde Kullanıcılar Birbiri Arasında Dosya Alış Verişi Yapacak
    28 Kasım 2012 Çarşamba 10:44
  • Kusura bakma sorunu tam okumadan cevap vermişim.. Hocam şuna bakabilirsiniz..

    http://innodesign.over-blog.com/article-file-transfer-using-c-53823615.html

    28 Kasım 2012 Çarşamba 10:50
  • Hocam Çok iyi Bir Kaynak Bulmuşsun Biraz Uğraşmayla Tam İstediğim Bir Düzeye Gelir. Teşekkür Ederim.

    Başka Fikri Olan Arkadaşlarında Fikirlerini Beklerim.

    28 Kasım 2012 Çarşamba 11:01
  • Hocam Sitenizi İncelerken Xml İle Sürüm Kontrolü Yaparak Serverden Dosya İndiriyor. Kodlarınızı Fazla İncelemedim Ama Şöyle Bişi Olabilirmi Şu Yukardaki Gönderdiğiniz Kodla Servere Yüklese Dosyayı Kullanıcı Araya Bi Progesser Bar Atıp Yükleme Bittiğinde Alıcı Kullanıcıya Bir Link Gitse O Şekilde Dosya Aktarımı Yapsa Sistem Alıcı Downloadından Sonra Server Dosyayı Temizlese Bu Konuda Fikrinizi Alabilirmiyim ?
    28 Kasım 2012 Çarşamba 11:05
  • Öyle olabilir ama dosyayı server'e nasıl gönderecek.. Belki benim xml ile sürüm kontrolü yapan kodlarını inceleyebilirsin ama istediğin şeyleri yapar mı bilemem. Çünkü veriyi gönderecek ama servere yollamak için güvenlik protokolellerinden nasıl geçecek ? 
    28 Kasım 2012 Çarşamba 11:29
  • Eski yazdığım bir kodu paylaşayım anlamdığın yer olursa sorabilirsin

    özetliyecek olursam farklı değerler yollanacağı için örnek ses,görüntü bu yüzden yollanacak byte'in başına bir karşı tarafda çözümleme yapabileceğin bir şey koymalısın

    ben   mesela dosya yollarken dosyamın başına bu komutu yazıyorum [~(09)~] ve byte çevirip dosya ile birleştirdim ardında karşı tarfta 8 byte lik veriyi okuyup stringe çeviriyorum eğer bu  [~(09)~] ise dosya geldi demek başdaki 8 byte sonraki kalan byte dosyamdır       

        string s = Encoding.GetEncoding(1254).GetString(GelenBayt, 0, 8);

       public void DosyaGonder()
            {
                try
                {
                    if (!String.IsNullOrEmpty(DosyaAdi))
                    {
                        string sr = string.Empty;
                        if (treeView1.SelectedNode.Index != 0)
                            sr = treeView1.SelectedNode.FullPath + "\\" + Path.GetFileName(DosyaAdi);
    
                        else sr = treeView1.SelectedNode.Text + "\\" + Path.GetFileName(DosyaAdi);
                        if (DosyaAdi != null & DosyaAdi != "")
                        {
                            byte[] Dizi = WeBCeTeSİ_Yardımcı.Dosyayı_BytaDonustur(DosyaAdi);
                            byte[] Komut = Encoding.GetEncoding(1254).GetBytes("[~(09)~]");
                            byte[] Boyut = Encoding.GetEncoding(1254).GetBytes(sr.Length.ToString());
                            byte[] SonKomut = Encoding.GetEncoding(1254).GetBytes(sr);
                            byte[] Birlestir = new byte[Komut.Length + Boyut.Length + Dizi.Length + SonKomut.Length];
    
                            Array.Copy(Komut, 0, Birlestir, 0, Komut.Length);
                            Array.Copy(Boyut, 0, Birlestir, Komut.Length, Boyut.Length);
                            Array.Copy(Dizi, 0, Birlestir, Komut.Length + Boyut.Length, Dizi.Length);
                            Array.Copy(SonKomut, 0, Birlestir, Komut.Length + Boyut.Length + Dizi.Length, SonKomut.Length);
                            int s = Birlestir.Length;
                            WeBCeTeSİ_Yardımcı.IstekYolla(Birlestir, this.Text.Split('(')[0].Trim());
                            DosyaAdi = String.Empty;
                        }
                    }
                }
                catch (Exception) { }
            }

      else if (s.Equals("[~(09)~]"))
                    {
                        string karakter = Encoding.GetEncoding(1254).GetString(GelenBayt, 8, 2);
                        int d = Int32.Parse(karakter);
                        string DosyanınAdıVeYolu = Encoding.GetEncoding(1254).GetString(GelenBayt, BaytMiktarı - d, d);
                        if (DosyanınAdıVeYolu.Contains("~x~"))
                        {
                            DosyanınAdıVeYolu = DosyanınAdıVeYolu.Replace("~x~", "");
                            DosyanınAdıVeYolu = DosyanınAdıVeYolu.Insert(0, @"C:\Users\\" + Environment.UserName + "\\Desktop\\");
                        }
    
                        byte[] dos = new byte[(BaytMiktarı - 8) - d - DosyanınAdıVeYolu.Length];
    
                        using (FileStream dosya = new FileStream(DosyanınAdıVeYolu, FileMode.Create))
                        {
                            try
                            {
                                Array.Copy(GelenBayt, 10, dos, 0, dos.Length);
                                dosya.Write(dos, 0, dos.Length);
                                dosya.Flush();
                                dosya.Close();
                            }
                            finally { dosya.Close(); dosya.Dispose(); }
                        }
                    }
                    #endregion

    29 Kasım 2012 Perşembe 19:01
  • sorununa ne derece cevap olacağını bilmiyorum ama en azından bir kaç fikir sahibi olursun 

    http://www.mehmetx.com/Kategoriler/Network_Programlama/12

    29 Kasım 2012 Perşembe 21:06