Sur votre Mac, examinez l'adresse d'écoute du serveur avec lsof, puis — si nécessaire — essayez de vous connecter à l'IP Wi-Fi ou Ethernet de votre Mac depuis un autre appareil sur le même réseau. Une adresse de bouclage telle que 127.0.0.1 ou ::1 est strictement locale ; une adresse générique (wildcard) telle que 0.0.0.0 ou :: peut accepter des connexions via les interfaces réseau. Confirmez l'adresse réelle et testez le port spécifique avant de vous prononcer sur l'accessibilité du serveur.
1. Trouver l'adresse d'écoute du serveur
Pendant que le serveur de développement fonctionne, ouvrez le Terminal et exécutez cette commande, en remplaçant 8000 par son port :
lsof -nP -iTCP:8000 -sTCP:LISTEN
lsof liste les fichiers ouverts, y compris les sockets réseau ; son filtre d'état TCP permet de sélectionner les processus en écoute. Les options -nP conservent les adresses sous forme numérique et empêchent l'affichage des numéros de port sous forme de noms de services. Manuel lsof d'Apple
Regardez la colonne NAME. Un résultat se terminant par 127.0.0.1:8000 (LISTEN) est lié à l'adresse de bouclage IPv4. localhost:8000 indique également une écoute en boucle locale, bien que le nom affiché puisse varier. Un résultat indiquant *:8000 correspond à une écoute générique pour cette famille d'adresses. Vérifiez également la colonne TYPE : la présence de lignes IPv4 et IPv6 distinctes peut avoir son importance. ::1 correspond au bouclage IPv6 ; :: est l'adresse générique IPv6. Sur certains systèmes, une écoute générique IPv6 peut aussi accepter des connexions IPv4, de sorte que la liste seule ne permet pas toujours de trancher ce point.
Si la commande ne renvoie rien, vérifiez que le serveur est toujours en cours d'exécution, que vous avez utilisé son port actuel et qu'il écoute en TCP. Cette commande n'inspecte pas les écoutes UDP. Si lsof ne renvoie aucun résultat sans privilèges élevés, réexécutez-la avec sudo uniquement si vous devez inspecter des processus appartenant à un autre compte ; macOS pourra vous demander votre mot de passe de session.
2. Interpréter l'adresse comme un indice d'accessibilité
Un processus en écoute lié à une adresse de bouclage spécifique accepte les connexions adressées à cette interface de bouclage, et non à l'adresse LAN de votre Mac. Une adresse générique signifie que le socket n'est pas restreint à la boucle locale, et qu'il peut donc être accessible via une interface réseau. Apple décrit un socket en écoute comme un socket qui attend des connexions entrantes. Aperçu d'Apple sur les serveurs basés sur TCP
Une adresse générique ne prouve pas pour autant qu'un autre appareil puisse se connecter. Le serveur doit toujours fonctionner sur ce port ; les paramètres du coupe-feu de macOS, l'isolation des clients sur le routeur ou le Wi-Fi, ainsi que d'autres conditions réseau peuvent affecter la connexion. À l'inverse, un test réussi dans un navigateur sur le Mac en utilisant localhost prouve uniquement qu'une connexion locale fonctionne.
3. Tester l'accès depuis un autre appareil sur votre réseau
Trouvez l'adresse du Mac pour le réseau que vous souhaitez tester. Pour le Wi-Fi, la documentation d'Apple indique comment trouver l'adresse IP de la connexion dans les réglages Wi-Fi ou le menu d'état Wi-Fi ; les menus exacts peuvent varier selon la version de macOS. Guide des réglages Wi-Fi d'Apple
Depuis un second appareil connecté au même réseau local, ouvrez un navigateur ou utilisez un client HTTP pour envoyer une requête à http://MAC-IP:8000, en remplaçant par l'adresse actuelle du Mac et le port du serveur. Par exemple, si l'adresse LAN du Mac est 192.168.1.23 et que le port est 8000, essayez http://192.168.1.23:8000. Une réponse indique que ce client a pu joindre le service par cet itinéraire ; un délai d'attente dépassé ou un refus de connexion n'indique pas, en soi, la cause du problème. Vérifiez que les deux appareils sont bien sur le réseau prévu et réexaminez le processus en écoute avant de vous pencher sur les paramètres du coupe-feu ou du réseau.
4. Rendre la liaison locale explicite lorsqu'elle est prise en charge
Le réglage approprié dépend du serveur de développement lui-même, et non d'une option globale de macOS. Par exemple, le module http.server de Python prend en charge --bind ; sa documentation indique que le comportement par défaut lie le socket à toutes les interfaces, tandis que cette commande le lie à la boucle locale IPv4 :
python3 -m http.server --bind 127.0.0.1 8000
Cela fonctionne si Python 3 est installé. Python documente à la fois l'option de liaison (bind) et son comportement par défaut. Documentation Python pour http.server
D'autres outils proposent leurs propres options d'hôte ou de liaison. Node.js documente que l'omission de l'hôte dans server.listen() sélectionne une adresse non spécifiée, le comportement dépendant de la disponibilité d'IPv6. Consultez la documentation correspondant à votre serveur et à sa version ; ne supposez pas qu'une option issue d'un autre framework s'applique. Documentation Node.js pour net.Server Après avoir modifié le paramètre, redémarrez le serveur et répétez la vérification avec lsof. Un test sur le réseau local est utile lorsque vous souhaitez partager l'accès, mais lier à une adresse LAN ou à une adresse générique peut exposer le service de développement à d'autres appareils accessibles sur le réseau.
Sources
Manuel lsof — Apple Open Source
Using Sockets and Socket Streams — Apple Developer
Réglages Wi-Fi sur Mac — Assistance Apple
http.server— Serveurs HTTP — Python Software FoundationNet | Documentation Node.js v20.20.2 — OpenJS Foundation