Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# 🌐 Reseaux Tracer : Simulation de Routage de Réseau
> Par Hamadou BA ([GitHub](https://github.com/Hama2017))
## 🚀 À propos du projet
Ce projet est une simulation complète de routage de réseau développée en Java. Il permet de modéliser, visualiser et analyser des réseaux informatiques avec différentes topologies. Vous allez pouvoir charger des fichiers de description de réseau, explorer les chemins de routage et générer des tables de routage complètes. Tout ça avec une interface simple mais efficace!

## ✨ Fonctionnalités
- 📊 **Visualisation de réseaux** - Affichage graphique des ordinateurs et leurs connexions
- 🛣️ **Calcul de chemins** - Détermination du chemin le plus court entre deux ordinateurs
- 📝 **Tables de routage** - Génération automatique des tables de routage pour chaque nœud
- 🔄 **Chargement de fichiers DGS** - Support pour les topologies personnalisées
- 🖱️ **Interface interactive** - Navigation simple dans l'application
## 🛠️ Technologies utilisées
- **Java** - Langage de programmation principal
- **Maven** - Gestion des dépendances et construction du projet
- **[GraphStream](https://graphstream-project.org/)** - Bibliothèque pour la visualisation et l'analyse des graphes
> GraphStream m'a vraiment facilité la vie avec sa gestion intuitive des graphes et son moteur de rendu puissant!
## 📋 Prérequis
- Java JDK 17 ou plus récent
- Maven 3.6+ (pour la compilation)
- Un peu de curiosité pour les réseaux 😉
## 🚀 Installation et exécution
```bash
# Cloner le dépôt
git clone https://github.com/Hama2017/Simulation-Routage.git
# Se déplacer dans le répertoire du projet
cd reseaux-tp-4-routage
# Compiler le projet avec Maven
mvn clean package
# Exécuter l'application
java -jar target/tp4-1.0-SNAPSHOT.jar
```
## 📸 Exemples d'utilisation
### Visualisation d'un réseau

*Capture d'écran de la visualisation d'un réseau simple avec 6 ordinateurs connectés.*
### Détermination du plus court chemin

*Le chemin le plus court entre C1 et C6 est affiché en vert.*
### Table de routage générée
```
Table de routage du reseau:
SITE C1 : (C2,C3)
C2 : C2 C3
C3 : C3 C2
C4 : C2 C3
C5 : C2 C3
C6 : C2 C3
SITE C2 : (C1,C3,C5,C4)
C1 : C1 C3 C5 C4
C3 : C3 C1 C5 C4
C4 : C5 C4 C3 C1
C5 : C5 C4 C3 C1
C6 : C5 C4 C3 C1
SITE C3 : (C1,C2,C5)
C1 : C1 C2 C5
C2 : C2 C1 C5
C4 : C2 C5 C1
C5 : C2 C5 C1
C6 : C2 C5 C1
SITE C4 : (C2,C5,C6)
C1 : C5 C2 C6
C2 : C5 C2 C6
C3 : C5 C2 C6
C5 : C5 C2 C6
C6 : C6 C5 C2
SITE C5 : (C2,C3,C4,C6)
C1 : C2 C3 C4 C6
C2 : C2 C4 C3 C6
C3 : C2 C3 C4 C6
C4 : C4 C2 C6 C3
C6 : C4 C6 C2 C3
SITE C6 : (C4,C5)
C1 : C4 C5
C2 : C4 C5
C3 : C4 C5
C4 : C4 C5
C5 : C4 C5
```
*Extrait d'une table de routage générée pour un réseau à 6 ordinateurs.*
## 📊 Format du fichier DGS
Les fichiers DGS décrivent la topologie du réseau et suivent cette structure:
```
DGS004
nom_reseau 0 0
an NOM_ORDI1 xy: x,y
an NOM_ORDI2 xy: x,y
...
ae ID_CONNEXION ORDI1 ORDI2 weight:POIDS
...
```
- `an` (add node) définit un ordinateur avec ses coordonnées
- `ae` (add edge) définit une connexion entre deux ordinateurs avec un poids
## 🧩 Architecture du projet
Le projet est construit autour de ces composants principaux:
- `Ordinateur` - Représente un nœud dans le réseau
- `Connection` - Modélise un lien entre deux ordinateurs
- `Reseaux` - Gère l'ensemble du graphe et les algorithmes
- `DGSReseauxParseur` - Analyse les fichiers de topologie
- `Main` - Point d'entrée avec interface utilisateur
## 🤝 Contribution
Les contributions sont les bienvenues! N'hésitez pas à:
1. Fork le projet
2. Créer une branche (`git checkout -b feature/amelioration`)
3. Commit vos changements (`git commit -m 'Ajout: nouvelle fonctionnalité'`)
4. Push sur la branche (`git push origin feature/amelioration`)
5. Ouvrir une Pull Request
## 📄 Licence
Ce projet est sous licence libre - voir le fichier [LICENSE](LICENSE) pour plus de détails.
## 📞 Contact
Hamadou BA - [GitHub](https://github.com/Hama2017)
---
Développé avec ❤️ et beaucoup de ☕ par Hamadou BA