【发布时间】:2012-04-11 15:55:27
【问题描述】:
使用 Node.js,我们可以创建一个服务器并监听一个随机端口:
var server = net.createServer();
server.listen(0, '127.0.0.1');
第一个参数port0表示选择随机端口,127.0.0.1表示只监听localhost,as documented。
Node.js 是否选择了未使用的端口?如果 Node.js 碰巧选择了一个已经打开并绑定到另一个应用程序的端口,我是否必须自己检查并重试?它会选择任何旧端口,还是只选择用户端端口 (>1024)?
【问题讨论】:
-
我认为它只是分配了一个随机端口,但我不是 100%。我认为您需要执行错误和增量等...就像在链接中一样(尽管他们使用相同的端口重试)
-
但是你不得不想知道在某个随机可用端口上启动意味着什么 - 除非你有某种服务发现,否则其他人和客户很难发现你随机发现的东西 :)
-
这通常不是问题,因为您会同意端口或使用知名端口。如果您没有绑定该端口的权限,那么您还有其他问题需要解决。
-
@bryanmac,我有特定的理由绑定到随机端口。请参阅stackoverflow.com/questions/9881305/… 绑定后,我可以轻松调用
server.address()以获取我所在的端口。