/// <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(); }
/// <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); }
/// <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(); }
/// <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()); }
/// <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); }
public IstemcidenMesajAlmaArgumanlari(IIstemci istemci, string mesaj) { this.istemci = istemci; this.mesaj = mesaj; }
public IstemciBaglantiArgumanlari(IIstemci istemci) { this.istemci = istemci; }
/// <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; }
// 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)); }