//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); }
//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"); } }