Serveur et plusqu'un client

houcem001 Messages postés 14 Date d'inscription mardi 29 avril 2008 Statut Membre Dernière intervention 26 décembre 2009 - 22 févr. 2009 à 23:29
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 à 14:25
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 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</socket></socket>

2 réponses

crougni Messages postés 18 Date d'inscription mardi 20 septembre 2005 Statut Membre Dernière intervention 3 mars 2009
23 févr. 2009 à 12:19
Salut

je crois qu'il y a eut un gros problème de retour chariot là

Sinon, tu développe un soft Serveur et un soft Client qui se connecte à ce serveur et permet dialoguer avec l'ensemble des clients connectés , ou bien un soft qui fait office de client et de serveur en même temps, et où les utilisateurs doivent se connecter sur chacun des utilisateurs avec lesquels ils souhaitent dialoguer ???
0
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 à 14:25
j'ai pas encore implanté le code de connexion entre 2 clients.
mon probleme pour le moment et que je peux pas envoyer un message à un client spécifié depuis le serveur.
donc je veux envoyer un message à un client en entrant comme paramètre son adresse IP.
merci
0
Rejoignez-nous