Пример #1
0
 //Focntion permettant de faire la demande de fermeture de toutes les connexions, utilisée à la fin d'exécution des commandes
 //du fichier S_lec.txt
 public void DemanderFermetureConnexions()
 {
     while (connexions.nbConnexions > 0)
     {
         //Fermeture d'une connexion
         ConnexionTransport conn = connexions.findConnexionAtIndex(0);
         ecrire_vers_reseau(conn.getNumeroConnexion() + ";" + N_DISCONNECT.req + ";" + conn.getAdresseDestination());
         connexions.FermerConnexion(conn.getNumeroConnexion(), "Fin d'exécution");
     }
 }
Пример #2
0
        //Fonction permettant d'établir une connexion avec un distant
        public void EtablirConnexion(string _identifiant)
        {
            ConnexionTransport conn = connexions.EtablirConnexion(_identifiant);

            //Tentative d'ouverture de connexion
            if (conn != null)
            {
                int numConn          = conn.getNumeroConnexion();
                int addrSource       = conn.getAdresseSource();
                int addrDestinataire = conn.getAdresseDestination();

                //Envoie de la primitive de demande de connexion vers la couche Réseau
                Utility.EcrireDansFichier("S_ecr.txt", "Ouverture de connexion pour " + _identifiant + "...", true);
                ecrire_vers_reseau(numConn + ";" + N_CONNECT.req + ";" + addrSource + ";" + addrDestinataire);
            }
        }
        //Fonction permettant de trouver une connexion selon son numéro de connexion
        public ConnexionTransport this[int numConn]
        {
            get
            {
                ConnexionTransport conn = null;
                sem.WaitOne();  //Blocage
                for (int i = 0; i < listeConnexions.Count; i++)
                {
                    try{
                        ConnexionTransport c = listeConnexions[i];
                        if (c.getNumeroConnexion() == numConn)
                        {
                            conn = c;
                            break;
                        }
                    }catch (IndexOutOfRangeException e) {
                        break;
                    }
                }
                sem.Release();  //Déblocage

                return(conn);
            }
        }