Пример #1
0
        static void Main(string[] args)
        {
            LinkedList<Client> listeClient = new LinkedList<Client>();

            int port = 6666;

            //on se déclare une oreille TCP sur un port spécifique
            TcpListener serveur = new TcpListener(System.Net.IPAddress.Any,port);

            //on la démarre....
            serveur.Start();

            //tant que le serveur est en vie on tourne en rond
            while (true)
            {
                Console.WriteLine(">> On attend une connexion");
                // cette ligne bloque tant que l'oreille n'entends pas une connexion
                Socket socketClient = serveur.AcceptSocket();

                Client client = new Client(socketClient,listeClient);

                ThreadStart ts = new ThreadStart(client.Thread);
                Thread trd = new Thread(ts);
                trd.Start();
            }
        }
Пример #2
0
 //retire un client à la liste de connexion
 private void RetirerClient(Client client)
 {
     // je vérouille la console
     lock (Console.Out)
     {
         Console.WriteLine("# On retire un client");
     }
     //je vérouille la liste avant la supression
     bool retire = false;
     lock (listeClient)
     {
         retire = listeClient.Remove(client);
     }
     lock (Console.Out)
     {
         //la variable retire indique si "true/false" l'objet à été retiré de la liste.
         Console.WriteLine("# Le client à été retiré de la liste :" + retire);
         Console.WriteLine("# "+listeClient.Count + " Client connecté(s)");
     }
 }
Пример #3
0
 private void DiffuserCommande(Client emetteur, string commande)
 {
     Console.WriteLine("On doit diffuser " + commande + "!" + emetteur.nick);
     lock (listeClient)
     {
         // on diffuse pour tous les client.... donc pour tous les clients....
         foreach (Client client in listeClient)
         {
             //si le client n'est pas celui qui vient d'envoyer
             if (!client.Equals(emetteur))
             {
                 //on diffuse
                 client.Ecrire(commande + "!" + emetteur.nick );
             }
         }
     }
 }
Пример #4
0
        //ajoute un client à la liste de connexion
        private void AjouterClient(Client client)
        {
            //important de vérouiller la liste lors de l'ajout pour éviter que 2 threads veuille écrire dans la liste en même temps
            lock (listeClient)
            {
                listeClient.AddLast(client);
            }

            //pour éviter que 2 thread essaient d'écrire dans la console en même temps, je vérouille la Console.
            lock (Console.Out)
            {
                Console.WriteLine("# on ajoute un client");
                Console.WriteLine("# "+listeClient.Count + " client connecté");
            }
        }