如何为自定义应用程序保留端口列表?
具体来说,我正在创建的产品具有很多流程,并且它们之间有很多相互联系。
我遇到的问题是-操作系统偶尔会窃取我的端口。很少见,但确实如此。
这可能是因为其他应用程序使用了“ :: bind”,但未指定端口。
有时,当我使用未绑定的套接字调用“ :: connect”时,我自己的应用程序会盗用该端口。从手册页可以看出:
如果套接字尚未绑定到本地地址,则connect()应将其绑定到一个地址,除非该套接字的地址族为AF_UNIX,否则为未使用的本地地址。
所以我的问题是,我可以保留我需要的端口以便操作系统不使用它们吗?可以用/ etc / services完成吗?还是有其他方法?
SELinux
执行模式是否可以满足您的要求,我仍在学习中。所以只是猜测,也许你可以定义自己的策略SELinux
,以储备你的端口,比如my_server_port_t tcp 1111, 2222, 3333, 4444-4600
。如果您的应用程序可以在任何地方运行(而不是服务器应用程序),那么恐怕您无法控制SELinux
ON或OFF。