Parcours 0 — Avant de commencer · leçon gratuite · 12 min
Serveur, localhost et port
« Ouvre http://localhost:3000 » : trois mots, trois idées. Après cette leçon, tu sais exactement ce qui se passe quand tu tapes cette adresse.
Objectifs
- Expliquer ce qu’est un serveur (le programme, pas la machine)
- Comprendre localhost et pourquoi personne d’autre ne voit ton site
- Lire un port et réagir à « port déjà utilisé »
Un serveur est un programme qui attend des demandes et y répond. Quand ton navigateur affiche une page, il a envoyé une demande (« donne-moi /index.html ») à un serveur, qui a répondu avec le fichier. Le mot désigne aussi, par extension, la machine sur laquelle ce programme tourne — mais dans cette formation, « serveur » = le programme.
Pendant que tu développes, tu lances un serveur sur ton propre ordinateur. Pour le joindre, ton navigateur utilise une adresse spéciale qui veut dire « cette machine-ci » : localhost (ou son équivalent numérique 127.0.0.1). Personne d'autre sur internet ne peut y accéder : localhost sur le PC de ton voisin désigne son PC, pas le tien.
Une machine peut faire tourner plusieurs serveurs à la fois. Pour les distinguer, chacun écoute sur un port : un numéro entre 1 et 65535, écrit après deux-points. http://localhost:3000 = « parle au serveur qui écoute sur le port 3000 de ma machine ». Les outils de développement ont leurs habitudes : 3000 (Next.js, Express), 5173 (Vite), 8000 (Django), 8080 (un peu tout).
Un port ne peut être occupé que par un seul processus à la fois. D'où l'erreur classique address already in use : un serveur tourne déjà là.
http://localhost:5173/contact se lit de gauche à droite :
| Morceau | Rôle |
|---|---|
| http:// | le protocole, la « langue » utilisée (HTTP ; HTTPS quand c'est chiffré) |
| localhost | l'hôte : quelle machine. Ici, la tienne |
| :5173 | le port : quel programme sur cette machine |
| /contact | le chemin : quelle ressource demander à ce programme |
Quand tu mets ton site en ligne, seule la partie hôte change : https://monsite.fr/contact. Le port n'apparaît plus parce que HTTPS utilise le port 443 par défaut (80 pour HTTP). Le serveur, lui, fait exactement la même chose qu'en local : recevoir des demandes, répondre.
$ npm run dev
VITE v7.0.0 ready in 320 ms
➜ Local: http://localhost:5173/
➜ Network: use --host to expose« Local » : accessible depuis cette machine. « Network » : le serveur peut, sur demande, écouter aussi sur ton adresse Wi-Fi pour tester depuis ton téléphone — utile, mais à ne faire que sur un réseau de confiance.
Ouvre l'adresse dans le navigateur : la page s'affiche. Coupe le serveur (Ctrl+C), recharge : « Impossible de se connecter ». Normal : plus personne n'écoute sur le port 5173.
Claude Code lance souvent un serveur de développement pour vérifier son travail, et te donne l'adresse à ouvrir. Il peut aussi tester lui-même une page avec curl http://localhost:3000. Quand il te dit « le serveur tourne sur le port 3000 », tu sais maintenant ce que ça veut dire, et pourquoi il faut l'arrêter avant d'en lancer un autre sur le même port.
Erreurs courantes
Impossible de se connecter / ERR_CONNECTION_REFUSED sur localhost
Aucun serveur n’écoute sur ce port : il n’est pas lancé, s’est arrêté, ou tourne sur un autre port.
Regarde le terminal du serveur : il affiche le port réel. Relance-le si besoin.
Error: listen EADDRINUSE: address already in use :::5173
Un autre processus occupe déjà le port.
Arrête l’ancien serveur (Ctrl+C dans son onglet), ou trouve-le : lsof -i :5173 (macOS/Linux), netstat -ano | findstr :5173 (Windows).
Mon téléphone ne peut pas ouvrir localhost:5173
localhost désigne l’appareil lui-même : sur ton téléphone, c’est le téléphone.
Lance le serveur avec --host et utilise l’adresse IP locale affichée (192.168.x.x), sur le même Wi-Fi.
À retenir
- Un serveur est un programme qui attend des demandes et répond.
- localhost = cette machine. Personne d’autre ne voit ton serveur local.
- Le port (:3000, :5173) dit quel programme écoute. Un port, un processus.
- « Address already in use » = un serveur tourne déjà là : arrête-le ou change de port.