我想避免硬编码端口号,如下所示:
httpd = make_server('', 8000, simple_app)
我以这种方式创建服务器的原因是我想将它用作 Adobe AIR 应用程序的“内核”,以便它可以使用 PyAMF 进行通信。由于我在客户端运行它,我定义的任何端口很可能已经在使用中。如果有更好的方法可以做到这一点并且我问错了问题,请告诉我。
我想避免硬编码端口号,如下所示:
httpd = make_server('', 8000, simple_app)
我以这种方式创建服务器的原因是我想将它用作 Adobe AIR 应用程序的“内核”,以便它可以使用 PyAMF 进行通信。由于我在客户端运行它,我定义的任何端口很可能已经在使用中。如果有更好的方法可以做到这一点并且我问错了问题,请告诉我。
问题是您需要一个已知端口供应用程序使用。但是如果你给一个端口号 0,我相信操作系统会为你提供第一个可用的未使用端口。
问题是您需要一个已知端口供应用程序使用。但是如果你给一个端口号 0,我相信操作系统会为你提供第一个可用的未使用端口。
你是对的,先生。这是它的工作原理:
>>> import socket
>>> s = socket.socket()
>>> s.bind(("", 0))
>>> s.getsockname()
('0.0.0.0', 54485)
我现在有一个绑定到端口 54485 的套接字。
是make_server
你写的函数吗?更具体地说,您是否处理创建套接字的代码?如果这样做,应该有一种方法可以不指定端口号(或指定 0 作为端口号),操作系统会为您选择一个可用的端口号。
除此之外,您可以选择一个随机端口号,例如 54315 ......不太可能有人会使用那个端口号。
防火墙允许您逐个端口允许或拒绝流量。仅出于这个原因,没有明确定义端口的应用程序应该会在客户端安装中遇到各种问题。
我说选择一个随机端口,如果需要,用户可以很容易地更改端口。
这里是知名港口的良好起点。