我们有一个定制的应用程序,它需要在自己的端口号上服务请求。我们真的不关心这个数字是多少,尽管在我们决定之后我们会坚持使用这个端口。如何选择一个最不可能与用户系统上运行的其他应用程序或服务冲突的数字?
有没有我们应该遵守的规则或标准?
A澄清:一旦我们选择了端口,我们就需要坚持使用它。不能使用动态的。我们正在构建一个自定义的SFTP服务器,我们必须告诉我们的客户它在哪个端口上运行。
发布于 2011-09-02 03:29:48
发布于 2011-09-02 03:28:02
对于静态应用程序,可以考虑检查/etc/services
,以找到一个不会与您正在使用的其他任何东西发生冲突并且在其他地方不常用的端口。
$ 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
发布于 2011-09-02 03:28:34
如果您不关心端口号,也不介意每次程序运行时它都会改变,那么在侦听之前就不要绑定端口(或者绑定端口0,如果您想绑定一个特定的IP地址)。在这两种情况下,您都是在告诉OS为您选择一个空闲端口。
开始侦听之后,使用getsockname
找出选择了哪个端口。您可以将其写入文件,在屏幕上显示,让孩子通过fork
继承它,等等。
https://stackoverflow.com/questions/7275430
复制相似问题