你如何决定使用哪个端口?

这有点主观,因为没有规则可以这么说。 每次我创build一个服务器,我都会想:“什么是最好的端口?” 我想答案是“任何,只要用户可以改变它”。 那么,其他人如何决定如何select默认端口呢? 就个人而言,如果使用与HTTP相关的东西,我喜欢使用类似8000的东西,而且我注意到这是一个相当普遍的趋势。 但是如果8000已经在使用了呢? 使用8001? 这似乎有点特别,我想是的。

很显然,我不是第一个问这个问题的人, IANA维护一个端口号列表…这导致我到未分配的范围(48620-49150)。 我想我们应该真的使用这些,但为什么不更多的程序员呢? 你如何决定使用哪一个; 如果每个人都从#1开始,那么我们都将使用48620。

我想你已经尽可能地回答了你的问题。 没有什么严格的规定可以超越你所说的。 但一般来说:

  • 查看IANA列表并select一个未使用的端口。
  • select一个容易记住的端口号。
  • 不要在代码中修复端口号。 某些其他产品可能select了与您相同的端口,并且您永远不知道何时必须在服务器上共存,因此将端口号放在某个configuration文件中,以便在必要时可以更改而不必重新编译。 改变端口号的能力也可以帮助穿越防火墙而不必重新configuration它们。 (如果configuration文件不存在,您可以始终默认为您select的值。)
  • 有一种说法是,你不想挑选太高的东西,因为你可能会与用于临时端口的范围相冲突。 这不太可能会被这个打击,但是当它发生的时候debugging是一个很难的问题。

(如果您想要提取难忘的端口号码,我曾经和一个记住他的同事的电话号码的人一起工作)。

一些容易记住和适当的书呆子未分配(每个IANA)端口:

(e)

31415(pi)

60221(avagadro的)

在testing期间…总是#666;)

经过Google的快速search,以确保清楚,我通常只select一些个人意义。

你是在自问自答? select任何未分配的端口,并允许用户更改它。

怎么样:

defaultPort = (new Random()).Next(48620, 49150); 

我更喜欢这种方式:(下面的Python代码)

 #!/usr/bin/env python3 import random as R r = R.SystemRandom() print([r.randrange(1024, 65535) for x in range(4)]) 

然后我select我最喜欢的号码。 或者当然,如果您对可接受的数字有更严格的限制,请更改范围。

我build议不要使用像5位数字这样的大数字的端口,因为它可能会碰到一些其他操作系统进程并分配临时端口。 由于其局限性,您将开始“已经使用错误”。

    Interesting Posts