¿Cómo reservo una lista de puertos para mis aplicaciones personalizadas?
Para ser específicos, el producto que estoy creando tiene muchos procesos y mucha intercomunicación entre ellos.
El problema que tengo es que, de vez en cuando, el sistema operativo me roba los puertos. Es raro, pero sucede.
Esto podría deberse a que una aplicación diferente ha usado ":: bind" sin ningún puerto especificado.
O, a veces, mis propias aplicaciones roban el puerto cuando llamo ":: connect" con un socket independiente. Como se ve desde la página del manual:
Si el socket no se ha vinculado a una dirección local, connect () lo vinculará a una dirección que, a menos que la familia de direcciones del socket sea AF_UNIX, sea una dirección local no utilizada.
Entonces mi pregunta es, ¿puedo reservar los puertos que necesito para que el sistema operativo no los use? ¿Se puede lograr esto con / etc / services? ¿O hay una manera diferente?
SELinux
en el modo de cumplimiento puede cumplir con sus requisitos, todavía estoy aprendiendo sobre ello. Así que sólo una suposición, tal vez usted puede definir su propia política para SELinux
que encaje puertos suyo, tales como my_server_port_t tcp 1111, 2222, 3333, 4444-4600
. Si su aplicación se ejecutará en todas partes (no en una aplicación de servidor), me temo que no puede controlar si SELinux
está activada o desactivada.