Soran
C# Soket programlama client arası iletişim

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 ?
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.
-
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(); } }
-