示例#1
0
        /// <summary>
        /// cikis komutunu uygulayan fonksyon
        /// </summary>
        /// <param name="istemci">Çýkýþ yapan istemci</param>
        private void komut_cikis(IIstemci istemci)
        {
            Kullanici kullanici = null;

            //Eþzamanlý eriþimlere karþý koleksiyonu kilitleyelim
            lock (kullanicilar)
            {
                //Tüm kullanýcýlarý tara, istemci nesnesini bul
                foreach (Kullanici kul in kullanicilar)
                {
                    if (kul.Istemci == istemci)
                    {
                        kullanici = kul;
                        break;
                    }
                }
                //Ýstemci listede varsa listeden çýkar
                if (kullanici != null)
                {
                    kullanicilar.Remove(kullanici);
                }
                //Listede yoksa devam etmeye gerek yok, fonksyondan çýk
                else
                {
                    return;
                }
            }
            //Tüm kullanýcýlara bu kullanýcýnýn giriþ yaptýðý bilgisini gönder
            tumKullanicilaraMesajYolla("komut=kullanicicikis&nick=" + kullanici.Nick);
            //Kullanýcý listesini ekranda gösterelim
            kullaniciListesiniYenile();
        }
示例#2
0
        /// <summary>
        /// toplumesaj komutunu uygulayan fonksyon
        /// </summary>
        /// <param name="istemci">Mesajý gönderen istemci</param>
        /// <param name="mesaj">Gönderilen mesaj</param>
        private void komut_toplumesaj(IIstemci istemci, string mesaj)
        {
            //Kullanýcýlarý saklamak için deðiþkenler
            Kullanici gonderenKullanici = null;

            //Eþzamanlý eriþimlere karþý koleksiyonu kilitleyelim
            lock (kullanicilar)
            {
                //Tüm kullanýcýlarý tara,
                //mesajý gönderen kullanýcýyý bul
                foreach (Kullanici kul in kullanicilar)
                {
                    //Gönderen kullanýcýyý Istemci nesnesine göre ayýrt ediyoruz
                    if (kul.Istemci == istemci)
                    {
                        gonderenKullanici = kul;
                        break;
                    }
                }
            }
            //Gönderen kullanýcý bulunamadýysa fonksyonu sonlandýralým
            if (gonderenKullanici == null)
            {
                return;
            }
            //Tüm kullanýcýlara istenilen mesajý gönderelim
            tumKullanicilaraMesajYolla("komut=toplumesaj&nick=" + gonderenKullanici.Nick + "&mesaj=" + mesaj);
        }
示例#3
0
 /// <summary>
 /// giris komutunu uygulayan fonksyon
 /// </summary>
 /// <param name="istemci">Girþi yapan istemci</param>
 /// <param name="nick">Seçilen nick</param>
 private void komut_giris(IIstemci istemci, string nick)
 {
     //Eþzamanlý eriþimlere karþý koleksiyonu kilitleyelim
     lock (kullanicilar)
     {
         Kullanici kullanici = null;
         //Tüm kullanýcýlarý tara,
         //ayný nickli baþkasý varsa giriþ baþarýsýzdýr
         foreach (Kullanici kul in kullanicilar)
         {
             if (kul.Nick == nick)
             {
                 kullanici = kul;
                 break;
             }
         }
         //Nick kullanýmdaysa istemciye uygun dönüþ mesajýný verip çýk
         if (kullanici != null)
         {
             istemci.MesajYolla("komut=giris&sonuc=basarisiz");
             return;
         }
         //Tüm kullanýcýlarý tara,
         //ayný istemci zaten listede varsa sadece nickini güncelle
         foreach (Kullanici kul in kullanicilar)
         {
             if (kul.Istemci == istemci)
             {
                 kullanici = kul;
                 break;
             }
         }
         //Ýstemci listede varsa sadece nickini güncelle
         if (kullanici != null)
         {
             kullanici.Nick = nick;
         }
         //Listede yoksa listeye ekle
         else
         {
             kullanicilar.Add(new Kullanici(istemci, nick));
         }
     }
     //Kullanýcýya iþlemin baþarýlý olduðu bilgisini gönder
     istemci.MesajYolla("komut=giris&sonuc=basarili");
     //Tüm kullanýcýlara bu kullanýcýnýn giriþ yaptýðý bilgisini gönder
     tumKullanicilaraMesajYolla("komut=kullanicigiris&nick=" + nick);
     //Bu kullanýcýya mevcut kullanýcý listesini gönder
     kullaniciListesiniGonder(istemci);
     //Kullanýcý listesini ekranda gösterelim
     kullaniciListesiniYenile();
 }
示例#4
0
        /// <summary>
        /// Bir istemciye tüm kullanýcýlarýn listesini gönderir
        /// </summary>
        /// <param name="istemci"></param>
        private void kullaniciListesiniGonder(IIstemci istemci)
        {
            //Kullanýcý listesini "," ile ayýrarak birleþtir
            StringBuilder nickler = new StringBuilder();

            //Eþzamanlý eriþimlere karþý koleksiyonu kilitleyelim
            lock (kullanicilar)
            {
                //Tüm kullanýcýlarý tara, nickleri birleþtir
                foreach (Kullanici kul in kullanicilar)
                {
                    nickler.Append("," + kul.Nick);
                }
                //Ýlk kullanýcýnýn baþýna konulan "," metnini kaldýr
                if (nickler.Length >= 1)
                {
                    nickler.Remove(0, 1);
                }
            }
            //Kullanýcýya listeyi gönder
            istemci.MesajYolla("komut=kullanicilistesi&liste=" + nickler.ToString());
        }
示例#5
0
        /// <summary>
        /// ozelmesaj komutunu uygulayan fonksyon
        /// </summary>
        /// <param name="istemci">Mesajý gönderen istemci</param>
        /// <param name="nick">Mesajýn iletileceði nick</param>
        /// <param name="mesaj">Gönderilen mesaj</param>
        private void komut_ozelmesaj(IIstemci istemci, string nick, string mesaj)
        {
            //Kullanýcýlarý saklamak için deðiþkenler
            Kullanici gonderenKullanici = null, hedefKullanici = null;

            //Eþzamanlý eriþimlere karþý koleksiyonu kilitleyelim
            lock (kullanicilar)
            {
                //Tüm kullanýcýlarý tara,
                //mesajý gönderen ve mesajýn hedefinde olan kullanýcýyý bul
                foreach (Kullanici kul in kullanicilar)
                {
                    //Gönderen kullanýcýyý Istemci nesnesine göre ayýrt ediyoruz
                    if (kul.Istemci == istemci)
                    {
                        gonderenKullanici = kul;
                    }
                    //Hedef kullanýcýyý nick'e göre ayýrt ediyoruz
                    if (kul.Nick == nick)
                    {
                        hedefKullanici = kul;
                    }
                    //Eðer kullanýcýlarý bulduysak döngüyü devam ettirmeye gerek yok
                    if (gonderenKullanici != null && hedefKullanici != null)
                    {
                        break;
                    }
                }
            }
            //Kullanýcýlar bulunamadýysa fonksyonu sonlandýralým
            if (gonderenKullanici == null || hedefKullanici == null)
            {
                return;
            }
            //Hedef kullanýcýya istenilen mesajý gönderelim
            hedefKullanici.Istemci.MesajYolla("komut=ozelmesaj&nick=" + gonderenKullanici.Nick + "&mesaj=" + mesaj);
        }
示例#6
0
 public IstemcidenMesajAlmaArgumanlari(IIstemci istemci, string mesaj)
 {
     this.istemci = istemci;
     this.mesaj   = mesaj;
 }
示例#7
0
 public IstemciBaglantiArgumanlari(IIstemci istemci)
 {
     this.istemci = istemci;
 }
示例#8
0
 /// <summary>
 /// Yeni bir Kullanýcý nesnesi oluþturur.
 /// </summary>
 /// <param name="istemci">ASMES kütüphanesindeki Istemci nesnesine referans</param>
 /// <param name="nick">Kullanýcýnýn Nick'i</param>
 public Kullanici(IIstemci istemci, string nick)
 {
     this.istemci = istemci;
     this.nick    = nick;
 }
示例#9
0
        // Bir istemciye bir mesaj yollar

        /// <param name="mesaj">Yollanacak mesaj</param>
        // <returns>Ýþlemin baþarý durumu</returns>
        public bool MesajYolla(IIstemci istemci, string mesaj)
        {
            return(istemci.MesajYolla(mesaj));
        }