3

我想避免硬编码端口号,如下所示:

httpd = make_server('', 8000, simple_app)

我以这种方式创建服务器的原因是我想将它用作 Adob​​e AIR 应用程序的“内核”,以便它可以使用 PyAMF 进行通信。由于我在客户端运行它,我定义的任何端口很可能已经在使用中。如果有更好的方法可以做到这一点并且我问错了问题,请告诉我。

4

4 回答 4

7

问题是您需要一个已知端口供应用程序使用。但是如果你给一个端口号 0,我相信操作系统会为你提供第一个可用的未使用端口。

于 2009-01-14T06:16:22.633 回答
6

问题是您需要一个已知端口供应用程序使用。但是如果你给一个端口号 0,我相信操作系统会为你提供第一个可用的未使用端口。

你是对的,先生。这是它的工作原理:

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

我现在有一个绑定到端口 54485 的套接字。

于 2009-01-14T13:41:38.617 回答
2

make_server你写的函数吗?更具体地说,您是否处理创建套接字的代码?如果这样做,应该有一种方法可以不指定端口号(或指定 0 作为端口号),操作系统会为您选择一个可用的端口号。

除此之外,您可以选择一个随机端口号,例如 54315 ......不太可能有人会使用那个端口号。

于 2009-01-14T06:16:18.233 回答
-2

防火墙允许您逐个端口允许或拒绝流量。仅出于这个原因,没有明确定义端口的应用程序应该会在客户端安装中遇到各种问题。

我说选择一个随机端口,如果需要,用户可以很容易地更改端口。

这里是知名港口的良好起点。

于 2009-01-14T06:20:30.877 回答