示例#1
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);
            }
        }
        //Fermeture d'une connexion selon son numéro de connexion
        public void FermerConnexion(int _numConn, String raison)
        {
            ConnexionTransport conn = this [_numConn];

            sem.WaitOne();      //Blocage
            listeConnexions.Remove(conn);

            //Libération des adresses utilisées
            adressesUtilises [conn.getAdresseSource()]      = false;
            adressesUtilises [conn.getAdresseDestination()] = false;
            nbAdressesUtilises -= 2;

            sem.Release();      //Déblocage

            //Affichage en console et écriture dans le fichier de sortie
            Utility.AfficherDansConsole("Fermeture de connexion pour " + conn.getIdentifiant() + " - " + raison, Constantes.OUTPUT_COLOR);
            Utility.EcrireDansFichier("S_ecr.txt", "Fermeture de connexion pour " + conn.getIdentifiant() + " - " + raison, true);
        }