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