310 votes

Socket.error: [Errno 48] Adresse déjà utilisée

Je tente de configurer un serveur avec python depuis le terminal mac.

Je me déplace vers l'emplacement du dossier et utilise:

python -m SimpleHTTPServer

Mais cela me donne une erreur:

socket.error: [Errno 48] Adresse déjà utilisée

J'avais précédemment ouvert une connexion en utilisant la même commande pour un site web différent situé dans un endroit différent de ma machine.

3voto

Thiago Farias Points 21

J'ai un raspberry pi, et j'utilise un serveur web python (à l'aide de Flask). J'ai tout essayé ci-dessus, la seule solution est de fermer le terminal (shell) et de le rouvrir. Ou redémarrer le raspberry pi, car rien n'arrête ce serveur web...

0voto

Sireesh Points 802

Ce cas d'utilisation commun se produit pour tout développeur.

Il est préférable de le garder comme fonction dans votre système local. (Il est donc préférable de conserver ce script dans l'un des profils de shell comme ksh/zsh ou bash en fonction de la préférence de l'utilisateur)

function killport {
   kill -9 `lsof -i tcp:"$1" | grep LISTEN | awk '{print $2}'`
}

Utilisation:

killport numéro_de_port

Exemple:

killport 8080

0voto

bhelm Points 136

Ajout à la réponse de Michael Schmid J'ai rencontré le problème, pour permettre la réassociation du port, il faut SOUS-CLASSE le serveur de sockets de cette manière :

from socketserver import TCPServer, BaseRequestHandler
from typing import Tuple, Callable
class MySockServer(TCPServer):
    def __init__(self, server_address: Tuple[str, int], RequestHandlerClass: Callable[..., BaseRequestHandler]):
        self.allow_reuse_address = True
        super().__init__(server_address, RequestHandlerClass)

parce qu'après l'instanciation, il n'y a pas de point à changer ce drapeau. Ensuite, utilisez-le à la place de TCPServer ou de tout ce que vous utilisez.

0voto

Ayse Points 36

Cette erreur est renvoyée parce qu'une tentative est faite de relancer le projet alors qu'il est toujours en cours d'exécution. Arrêtez et redémarrez le projet.

0voto

La seule solution qui a fonctionné pour moi a été de redémarrer mon ordinateur portable.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X