Application client-serveur style Spotify développée en Java avec Sockets et Swing.
MiniSpotify/
│
├── SpotifyServeur/ ← Serveur (à lancer en premier)
│ ├── src/
│ │ ├── MainServer.java Port 5000 (clients) + 5001 (admins)
│ │ ├── ClientHandler.java Gère 1 client par thread
│ │ ├── AdminHandler.java Gère 1 admin par thread
│ │ └── MusiqueService.java Accès aux fichiers MP3
│ ├── lib/
│ │ └── jlayer-1.0.1.jar
│ └── data/
│ ├── musiques/ ← Mettez vos MP3 ici !
│ └── temp_uploads/ ← Upload temporaire
│
├── SpotifyClient/ ← Interface client style Spotify
│ ├── src/
│ │ ├── client/
│ │ │ ├── SpotifyClientApp.java Fenêtre principale
│ │ │ ├── ServerConnection.java Connexion socket
│ │ │ ├── AudioPlayer.java Lecteur audio JLayer
│ │ │ └── ui/
│ │ │ ├── SpotifyColors.java Palette de couleurs
│ │ │ ├── RoundedButton.java Boutons arrondis
│ │ │ ├── MusicCard.java Carte d'album
│ │ │ ├── PlayerBar.java Barre de lecture
│ │ │ ├── Sidebar.java Navigation gauche
│ │ │ ├── MainPanel.java Grille de musiques
│ │ │ ├── ConnectDialog.java Dialogue connexion
│ │ │ ├── ProgressSlider.java Slider progression
│ │ │ ├── VolumeSlider.java Slider volume
│ │ │ └── WrapLayout.java Grille responsive
│ └── lib/
│ └── jlayer-1.0.1.jar (+ flatlaf-*.jar si disponible)
│
├── SpotifyAdmin/ ← Interface admin (gestion musiques)
│ ├── src/
│ │ ├── admin/
│ │ │ ├── SpotifyAdminApp.java Interface admin Swing
│ │ │ ├── AdminConnection.java Connexion socket admin
│ │ │ └── ui/
│ │ │ └── AdminColors.java Palette admin
│ └── lib/
│ └── jlayer-1.0.1.jar
│
├── run.bat ← Compile + lance (Windows)
└── run.sh ← Compile + lance (Linux/Ubuntu)
run.bat # Compile tout + menu interactif
run.bat serveur # Lance directement le serveur
run.bat client # Lance directement le client
run.bat admin # Lance directement l'adminchmod +x run.sh
./run.sh # Compile tout + menu interactif
./run.sh serveur # Lance le serveur
./run.sh client # Lance le client
./run.sh admin # Lance l'adminPC Admin ──────────────────────────→ Port 5001 (AdminHandler)
↑
SERVEUR (MainServer)
↑
PC Client 1 ────────────────────────→ Port 5000 (ClientHandler)
PC Client 2 ────────────────────────→ Port 5000 (ClientHandler)
PC Client N ────────────────────────→ Port 5000 (ClientHandler)
Plusieurs clients peuvent se connecter simultanément. Un ou plusieurs admins se connectent sur le port 5001.
| Commande | Description |
|---|---|
LIST |
Reçoit la liste des MP3 |
PLAY <fichier> |
Reçoit le fichier MP3 en streaming |
DOWNLOAD <fichier> |
Télécharge le fichier MP3 |
NEXT |
Musique suivante |
PREVIOUS |
Musique précédente |
SEEK <sec> |
Confirmation seek |
QUIT |
Déconnexion |
| Commande | Description |
|---|---|
LIST |
Reçoit COUNT N puis N noms |
UPLOAD_START <nom> <taille> |
Upload un fichier MP3 |
REMOVE <fichier> |
Supprime un MP3 |
ADD <fichier> |
Déplace depuis temp_uploads/ |
EXIT |
Déconnexion |
- ✅ Bibliothèque musicale en grille de cartes style Spotify
- ✅ Lecture streaming depuis le serveur via sockets
- ✅ Play / Pause / Stop avec lecteur audio JLayer
- ✅ Suivant / Précédent avec navigation cyclique
- ✅ Liker des musiques (persistant en mémoire)
- ✅ Section "Titres likés"
- ✅ Recherche par nom de musique
- ✅ Barre de progression et volume
- ✅ Sidebar avec navigation (Accueil, Recherche, Bibliothèque, Likés)
- ✅ Thème sombre style Spotify
- ✅ Voir toutes les musiques sur le serveur
- ✅ Uploader des MP3 depuis son PC (bouton + drag & drop)
- ✅ Supprimer une musique
- ✅ Console de logs en temps réel
- ✅ Barre de progression pour l'upload
| Fichier | Usage | Où le mettre |
|---|---|---|
jlayer-1.0.1.jar |
Lecture MP3 | SpotifyClient/lib/ et SpotifyServeur/lib/ |
flatlaf-*.jar |
Thème sombre natif (optionnel) | SpotifyClient/lib/ et SpotifyAdmin/lib/ |
FlatLaf améliore l'aspect des composants Swing (boutons système, scrollbars, etc.). Téléchargez-le sur : https://www.formdev.com/flatlaf/
Pour changer les ports, modifiez MainServer.java :
public static final int CLIENT_PORT = 5000; // clients
public static final int ADMIN_PORT = 5001; // admins"Impossible de se connecter" → Vérifiez que le serveur est lancé en premier → Vérifiez l'IP et le port → Désactivez temporairement le pare-feu Windows
"Aucune musique disponible"
→ Placez des fichiers .mp3 dans SpotifyServeur/data/musiques/
Pas de son
→ Vérifiez que jlayer-1.0.1.jar est dans SpotifyClient/lib/
FlatLaf non trouvé → Normal, l'application fonctionne sans ; les thèmes natifs Swing sont utilisés