Rechercher : dans
Par :

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

houcem001, le 23 fév 2009 à 01:23:43 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP
Opera 9.63

Meilleures réponses pour « serveur et plusqu'un client " c# .NET" » dans :
[Programmation] Comment débuter, quel langage? VoirComment débuter, quel langage? Introduction Ceux que l'on peut utiliser Delphi/Pascal Java Python .Net Smalltalk Ceux que l'on peut utiliser à la rigueur C/C++ PHP Ada Lisp/Caml/... Ceux que l'on peut ne pas utiliser
Facebook - Attente de b.static.ak.fbcdn.net VoirLorsque vous êtes sur Facebook, la barre d'état du navigateur affiche constamment l'un des messages suivants : Transfert des données depuis b.static.ak.fbcdn.net Attente de b.static.ak.fbcdn.net Les serveurs *.static.ak.fbcdn.net sont en...
C++ .NET VoirC++.NET C++.NET est une version étendue du langage C++ standard qui fournit le support de la programmation managée. Les extensions managées pour C++ sont principalement constituées d’un ensemble de mots clés et d’attributs. Tout fichier...
Environnement Client/Serveur VoirPrésentation de l'architecture d'un système client/serveur De nombreuses applications fonctionnent selon un environnement client/serveur, cela signifie que des machines clientes (des machines faisant partie du réseau) contactent un serveur, une...
Réseaux - Architecture client/serveur à 3 niveaux VoirPrésentation de l'architecture à 2 niveaux L'architecture à deux niveaux (aussi appelée architecture 2-tier, tier signifiant rangée en anglais) caractérise les systèmes clients/serveurs pour lesquels le client demande une ressource et le serveur la...
Collection CommentÇaMarche.net