none
C# Soket programlama client arası iletişim RRS feed

  • Soru

  • Merhabalar,

    Öğrenmek amacıyla C# soket programlama ile basit bir chat uygulaması yazayım dedim. Server kısmı tamam, client kısmıda tamam server a birden fazla clientta bağlanabiliyor. Fakat çözemediğim şey şu elimizde server a bağlı A B C clientlerı olsun. Ben A ile B clientı arasında mesaj göndermek istiyorum ama C clienti göremesin. Aradım taradım tüm örnekler basit server client ilişkisine dayalı (clientların birinden mesaj gönderiliyor hepsinde o mesaj görünüyor) yada ben bulamadım. Nasıl bir yapı kurmalıyım yol gösterirmisiniz ?

    27 Haziran 2018 Çarşamba 20:37

Tüm Yanıtlar

  • Server normalde tek bir client a dönüş yapar. Sizdeki kod örneği muhtemelen hepsini dolanıyor. Döngü olan kısımlara daha dikkatli bakın.

    www.cihanyakar.com

    27 Haziran 2018 Çarşamba 21:55
  • Server kodum şu şekilde. Evet dediğiniz gibi client bağlanınca xx metodunda ki msj client a iletiliyor server mesajı okudu diye. Şimdi bu server a 3 client bağlı olsun. Ben server dan 2. client a nasıl mesaj gönderebilirim? Nasıl bir metod oluşturmalıyım peki?

    public static void bag()
            {
                dinle = new TcpListener(IPAddress.Any, 1234);
                dinle.Start();
    
                Console.WriteLine("Çalışıyor:) \n adress IP= {0}", IPAddress.Any);
    
                Program p = new Program();
                while (true)
                {               
                    s = dinle.AcceptSocket();
                    IPEndPoint remoteIpEndPoint = s.RemoteEndPoint as IPEndPoint;
                    Console.WriteLine("kullanici baglnadi"); 
              
                    Thread AA = new Thread(new ThreadStart(() => p.xx(s)));
                    AA.Start();
                   
                }
    
    // -------------------------
    
    public void xx(Socket s)
            {
                while (true)
                {
                    NetworkStream ag = new NetworkStream(s);                             
                    StreamWriter akimyaz = new StreamWriter(ag);
                    StreamReader akimoku = new StreamReader(ag);
                    string gelenyazi = akimoku.ReadLine();
                    Console.WriteLine("Gelen msj:" + gelenyazi);
                    akimyaz.WriteLine("server msjı okudu");
                    akimyaz.Flush();
                    ag.Close();
                }      
            }


    27 Haziran 2018 Çarşamba 22:51
  • Serverdan clientlardan herhangi birine nasıl mesaj atabilirim bilen biri yok mu? Varsa örnek falanda inceleyebilirim, ben bulamadım
    28 Haziran 2018 Perşembe 13:34