我们有一个自定义应用程序,需要在它自己的端口号上提供请求.我们真的不在乎数字是多少,虽然在我们决定之后我们会坚持到那个端口.如何选择最不可能与用户系统上运行的其他应用程序或服务冲突的号码?
我们应遵循哪些规则或标准?
澄清一下:一旦我们选择了一个端口,我们就需要坚持下去.不能使用动态的.我们正在构建一个自定义SFTP服务器,我们必须告诉客户它正在运行什么端口.
Mic*_*ski 13
对于静态应用程序,请考虑检查/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
Run Code Online (Sandbox Code Playgroud)
如果您不关心端口号,并且不介意它在每次运行程序时都会更改,只需在侦听之前不要绑定端口(或者如果要绑定,则绑定端口0)特定的IP地址).在这两种情况下,您都告诉操作系统为您选择一个免费端口.
开始收听后,使用getsockname以找出选择的端口.您可以将其写入文件,在屏幕上显示,让孩子继承fork,等等.