Comment fermer un socket laissée ouverte par un tué programme?

J'ai une application en Python qui s'ouvre d'un simple socket TCP pour communiquer avec une autre application en Python sur un autre ordinateur. Parfois, le programme sera soit une erreur ou je vais directement à la tuer, et dans les deux cas, la prise peut être laissée ouverte pour quelques temps inconnu.

La prochaine fois que je vais à exécuter le programme, j'obtiens cette erreur:

socket.error: [Errno 98] Address already in use

Maintenant, le programme essaie toujours d'utiliser le même port, il semble comme si elle est toujours ouverte. J'ai vérifié et je suis tout à fait sûr que le programme n'est pas en cours d'exécution en arrière-plan et pourtant mon adresse est encore en usage.

ALORS, comment puis-je manuellement (ou autre) à proximité d'une prise/de l'adresse de mon programme peut immédiatement ré-utiliser?

Mise à jour

Basé sur la réponse de Mike j'ai vérifié les socket(7) page et regarda SO_REUSEADDR:

SO_REUSEADDR
    Indicates that the rules used in validating addresses supplied in a bind(2) call should
    allow reuse of local addresses.  For AF_INET sockets this means that a socket may bind,
    except when there is an active listening socket bound to the address.  When the listen
    ing  socket is bound to INADDR_ANY with a specific port then it is not possible to bind
    to this port for any local address.  Argument is an integer boolean flag.
  • Toute opposition à ce que ce DONC? Il a fini par être un tout problème de programmation, il est donc probablement plus de sens là
  • Pas du tout, je n'ai posté ici parce que je pensais à une commande Linux pour fermer le socket, je suis d'accord sa programmation de matériel. Peut-être le titre pourrait être modifié pour refléter le fait que c'était un programme en Python.
  • Shickadance migré, vous aurez à reformuler le titre si vous pensez que c'est nécessaire.
  • Voir aussi Comment forcer la fermeture d'un socket en TIME_WAIT