Comment créer un serveur HTTP en Python en utilisant le premier port disponible?

StackOverflow https://stackoverflow.com/questions/442062

  •  22-07-2019
  •  | 
  •  

Question

Je souhaite éviter de coder en dur le numéro de port comme suit:

httpd = make_server('', 8000, simple_app)

La raison pour laquelle j'ai créé le serveur de cette manière est que je souhaite l'utiliser comme "noyau" pour une application Adobe AIR afin qu'elle puisse communiquer à l'aide de PyAMF. Étant donné que j'exécute ceci du côté client, il est très possible que l'un des ports que je définis soit déjà utilisé. S'il existe un meilleur moyen de le faire et que je pose la mauvaise question, veuillez me le faire savoir.

Était-ce utile?

La solution

Le problème est qu’il vous faut un port connu pour l’application. Mais si vous donnez un numéro de port égal à 0, je pense que le système d'exploitation vous fournira le premier port disponible non utilisé.

Autres conseils

  

Le problème est qu’il vous faut un port connu pour l’application. Mais si vous donnez un numéro de port égal à 0, je pense que le système d'exploitation vous fournira le premier port disponible non utilisé.

Vous avez raison, monsieur. Voici comment cela fonctionne:

>>> import socket
>>> s = socket.socket()
>>> s.bind(("", 0))
>>> s.getsockname()
('0.0.0.0', 54485)

J'ai maintenant un socket lié au port 54485.

make_server est-il une fonction que vous avez écrite? Plus spécifiquement, gérez-vous le code qui crée les sockets? Si vous le faites, vous ne devez pas spécifier de numéro de port (ou 0 comme numéro de port) et le système d’exploitation en choisira un disponible.

En outre, vous pouvez simplement choisir un numéro de port aléatoire, tel que 54315 ... il est peu probable que quelqu'un l'utilise.

Les pare-feu vous permettent d'autoriser ou de refuser le trafic, port par port. Pour cette seule raison, une application sans port bien défini devrait s'attendre à rencontrer toutes sortes de problèmes dans une installation client.

Je dis: choisissez un port aléatoire et facilitez-le pour l'utilisateur si vous souhaitez modifier le port si besoin est.

Voici un bon point de départ pour les ports connus .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top