首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为自定义应用选择静态端口号?

如何为自定义应用选择静态端口号?
EN

Stack Overflow用户
提问于 2011-09-02 03:26:31
回答 4查看 10.9K关注 0票数 18

我们有一个定制的应用程序,它需要在自己的端口号上服务请求。我们真的不关心这个数字是多少,尽管在我们决定之后我们会坚持使用这个端口。如何选择一个最不可能与用户系统上运行的其他应用程序或服务冲突的数字?

有没有我们应该遵守的规则或标准?

A澄清:一旦我们选择了端口,我们就需要坚持使用它。不能使用动态的。我们正在构建一个自定义的SFTP服务器,我们必须告诉我们的客户它在哪个端口上运行。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-09-02 03:29:48

如果您不能准确地预测您的应用程序将运行的环境类型,那么就不要为此而烦恼。选择1024中的任何数字,并使其可配置,以便用户可以在与其他服务/应用程序冲突的情况下更改它。

当然,您仍然可以避免非常常见的端口,如8080 (替代HTTP)或3128 (代理,如squid),1666 (强制)等。您可以查看已知端口的全面列表,或者查看/ here /here

票数 8
EN

Stack Overflow用户

发布于 2011-09-02 03:28:02

对于静态应用程序,可以考虑检查/etc/services,以找到一个不会与您正在使用的其他任何东西发生冲突并且在其他地方不常用的端口。

代码语言:javascript
复制
$ tail /etc/services
nimspooler      48001/udp                       # Nimbus Spooler
nimhub          48002/tcp                       # Nimbus Hub
nimhub          48002/udp                       # Nimbus Hub
nimgtw          48003/tcp                       # Nimbus Gateway
nimgtw          48003/udp                       # Nimbus Gateway
com-bardac-dw   48556/tcp                       # com-bardac-dw
com-bardac-dw   48556/udp                       # com-bardac-dw
iqobject        48619/tcp                       # iqobject
iqobject        48619/udp                       # iqobject
票数 13
EN

Stack Overflow用户

发布于 2011-09-02 03:28:34

如果您不关心端口号,也不介意每次程序运行时它都会改变,那么在侦听之前就不要绑定端口(或者绑定端口0,如果您想绑定一个特定的IP地址)。在这两种情况下,您都是在告诉OS为您选择一个空闲端口。

开始侦听之后,使用getsockname找出选择了哪个端口。您可以将其写入文件,在屏幕上显示,让孩子通过fork继承它,等等。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7275430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档