【问题标题】:How to choose which port to use when building a windows service? (windows & .net) [closed]构建windows服务时如何选择使用哪个端口? (windows & .net) [关闭]
【发布时间】:2011-04-17 12:56:14
【问题描述】:

我正在编写一个 Windows 服务,它将为机器上的其他进程公开一个 http RESTful Web 服务。这将部署到我几乎/无法控制的各种公司桌面上的许多机器上。我应该如何选择我的服务应该监听哪个端口?

我会使其可配置,但需要知道如何选择一些合理的默认值。

我正计划使用 .NET 3.5(由于部署原因无法使用 4.0)和带有WCF REST Starter Toolkit 的 WCF。

更新:澄清一下,这些是公司非开发机器。我想选择一个不太可能用于其他任何事情的端口。我想从PORT NUMBERS 的列表中(感谢@Pascal Thivent)我应该在动态/私有范围内选择一个

动态和/或专用端口是从 49152 到 65535 的端口

那么有没有更好的方法来选择该范围内的端口,还是我只是随机选择?

【问题讨论】:

  • 不能保证给定的ephemeral port 会免费,它可能暂时处于使用状态。

标签: windows web-services http port


【解决方案1】:

在 Internet 号码分配机构 (IANA) 注册的用于 HTTP 的官方分配是:

  • 80:HTTP 标准端口,
  • 8080:HTTP 备用(通常由以非 root 用户身份运行的缓存或代理或 Web 服务器使用)

以下端口是也使用的非官方端口(未在 IANA 注册):

  • 8081:HTTP 备用
  • 8090:HTTP 替代(用作端口 8080 的替代)

我不知道您针对的是哪种机器,但如果它们包括开发机器,我可能会使用 8090 以尽量减少可能的冲突。

参考文献

【讨论】:

  • 它们是非开发办公环境中的标准企业台式机。我不想使用标准端口,而是选择不太可能用于其他任何用途的端口。
【解决方案2】:

最终,我们在注册端口范围内选择了一个任意未使用的端口 - 从 1024 到 49151 - 然后在有人出现并将该端口用于其他用途时对其进行配置。最好的解决方案是注册该端口。

我们选择不使用动态端口,因为进程可以任意开始使用它们,因此端口是否可用会不太一致。

【讨论】:

    【解决方案3】:

    如果您的服务是 HTTP,那么您应该使用端口 80 - 标准 HTTP 端口。这是大多数 REST Web 服务的典型特征。

    【讨论】:

    • 如果端口 80 被占用,8080 et seq 是常见的替代方案。
    • 服务正在桌面机器上运行。端口 80 不合适,因为我没有提供通用 Web 服务器,而且很可能其他东西(例如 skype)已经占用了该端口。
    • 在这种情况下,@Daniel 的评论是相关的:8080 及以上。 (顺便说一句,我希望我的 -1 不是为了回答最初发布的问题......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-11
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多