Wie kann ich einen HTTP-Server in Python mit dem ersten verfügbaren Port erstellen?

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

  •  22-07-2019
  •  | 
  •  

Frage

Ich mag hartzucodieren die Portnummer wie im folgenden vermeiden:

httpd = make_server('', 8000, simple_app)

Der Grund, warum ich die Erstellung der Server diese Art und Weise ist, dass ich es als ein ‚Kern‘ für eine Adobe AIR-Anwendung verwenden möchten, so wird es mit PyAMF kommunizieren. Da ich dies auf der Client-Seite renne ist es durchaus möglich, dass jeder Port definiere ich bereits in Gebrauch ist. Wenn es einen besseren Weg, dies zu tun, und ich die falsche Frage bin fragen, lass es mich wissen.

War es hilfreich?

Lösung

Das Problem ist, dass Sie einen bekannten Port für die Anwendung verwenden müssen. Aber wenn Sie eine Portnummer von 0 geben, glaube ich, die OS Sie mit dem ersten verfügbaren ungenutzten Ports zur Verfügung stellt.

Andere Tipps

  

Das Problem ist, dass Sie einen bekannten Port für die Anwendung verwenden müssen. Aber wenn Sie eine Portnummer von 0 geben, glaube ich, die OS Sie mit dem ersten verfügbaren ungenutzten Ports zur Verfügung stellt.

Sie sind richtig, Sir. Hier ist, wie das funktioniert:

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

Ich habe jetzt eine Steckdose an Port 54485 gebunden ist.

Ist make_server eine Funktion, die Sie geschrieben haben? Genauer gesagt, behandeln Sie den Code, der die Sockets erzeugt? Wenn Sie das tun, sollte es eine Möglichkeit geben, in denen Sie keine Portnummer angeben (oder Sie 0 als Portnummer angeben) und das Betriebssystem eine verfügbare für Sie auswählen.

Außerdem können Sie nur eine zufällige Portnummer wählen, wie 54315 ... es ist unwahrscheinlich, jemand wird, dass man werden.

Firewalls können Sie den Verkehr auf einer Port-für-Port-Basis erlauben oder zu verweigern. Schon aus diesem Grunde sollte eine Anwendung ohne einen gut definierten Port erwartet in alle Arten von Problemen in einer Client-Installation auszuführen.

Ich sage einen zufälligen Port auswählen, und machen es sehr einfach für den Benutzer den Port zu ändern, wenn es sein muss.

Hier ist ein guter Ausgangspunkt für bekannte Ports rel="nofollow.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top