Serveur et plusqu'un client " c# .NET"

Fermé
houcem001 Messages postés 14 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 26 décembre 2009 - 23 févr. 2009 à 01:23
Salut je suis entrain de programmer une plateforme de discussion mais j'ai un probleme pour envoyer des messages à un client sachant son adresse IP .
dans mon code ci dessous programmé en c# je peux pas envoyer qu'à un seul client

namespace PlateformeDeDiscussion
{
    class Clients
    {
        private static string reponse = null;
        private static string demande = null;
        public static void demander(string s)
        {
            demande = s;
        }
        public static string reponser()
        {
            return reponse;
        }
        public static void rep()
        {
            reponse = null;
        }
        public void connecter(String Adress, int port)
        {
            try
            {
                TcpClient tcpClient = new TcpClient(Adress, port);
                ThreadPool.QueueUserWorkItem(ecriture,tcpClient);
                using (NetworkStream networkStream = tcpClient.GetStream())
                {
                    using (StreamReader reader = new StreamReader(networkStream))
                    {
                        using (StreamWriter writer = new StreamWriter(networkStream))
                        {
                            writer.AutoFlush = true;
                            while (true)
                            {
                                reponse = reader.ReadLine();
                            }
                        }
                    }
                }
            }
            catch (Exception e) { } //Console.WriteLine(e.Message);
            finally { Serveurs.tclient.Clear(); }
        }
        public void ecriture(object info)
        {
 
            using (TcpClient tcpClient = info as TcpClient)
            
                using (NetworkStream networkStream = tcpClient.GetStream())
                {
                    using (StreamReader reader = new StreamReader(networkStream))
                    {
                        using (StreamWriter writer = new StreamWriter(networkStream))
                        {
                            // flux de sortie non bufferisé
                            writer.AutoFlush = true;
                            while (true)
                            {
                                if (demande != null)
                                    demande += "\r\n";
                                writer.Write(demande);
                                demande = null;
                                Thread.Sleep(50);
                            }
                        }
                    }
                }
            
        }
    }
class Serveurs
    {
        private static string reponse2;
        private static string demande2;
        public static ArrayList tclient = new ArrayList();
       public static List<Socket> mesClients = new List<Socket>();
        public static void demander(string s)
        {
            demande2 = s;
        }
        public static string reponser()
        {
            return reponse2;
        }
        public static void rep()
        {
            reponse2 = null;
        }
        public static void connecter(int port)
        {
            TcpListener ecoute = null;
            try
            {
                ecoute = new TcpListener(IPAddress.Any, port);
                ecoute.Start();
                ThreadPool.SetMinThreads(10, 10);
                ThreadPool.SetMaxThreads(10, 10);
                TcpClient tcpclient = null;
                while (true)
                {
                tcpclient = ecoute.AcceptTcpClient();
                ThreadPool.QueueUserWorkItem(lire, new Clientt() {CanalTcp = tcpclient});
                ThreadPool.QueueUserWorkItem(ecrire, new Clientt() {CanalTcp = tcpclient});
                tclient.Add((tcpclient.Client.RemoteEndPoint as IPEndPoint).Address.ToString());
                }
            }
            catch (Exception ex)
            {
                //Form3 form3 = new Form3();
                //form3.Text = ex.Message;
            }
            finally
            {
                ecoute.Stop();
            }
        }
      public static void lire(Object infos)
        {
            Clientt client = infos as Clientt;
            
 
            try
            {
                using (TcpClient tcpClient=client.CanalTcp)
                {
                    using (NetworkStream networkStream = tcpClient.GetStream())
                    {
                        using (StreamReader reader = new StreamReader(networkStream))
                        {
                            using (StreamWriter writer = new StreamWriter(networkStream))
                            {
                                // writer.AutoFlush = true;
                                while (true)
                                {
 
                                    reponse2 = reader.ReadLine();
 
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                // Form3 form3 = new Form3();
                //form3.Text = e.Message;
            }
        }
 
   
    
        public static void ecrire(Object infos2)
        {
          Clientt client1 = infos2 as Clientt;
            
            try
            {
                using (TcpClient tcpClient=client1.CanalTcp)
                {
                  using (NetworkStream networkStream = tcpClient.GetStream())
                    {
                        using (StreamReader reader = new StreamReader(networkStream))
                        {
                        using (StreamWriter writer = new StreamWriter (networkStream))
                            {
                                writer.AutoFlush = true;
                                demande2 = null;
                                while (true)
                                {
                                    if (demande2 != null)
                                        demande2 += "\r\n";
                                    writer.Write(demande2);
                                    demande2 = null;
                                    Thread.Sleep(50);
 
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception e)
            {
                //Form3 form3 = new Form3();
                //form3.Text = e.Message;
            }
        }
        internal class Clientt
        {
            public TcpClient CanalTcp { get; set; }
            //public int NumClient { get; set; }
        }
    }
}

merci de m'aider
A voir également: