En Java, necesito obtener un número de puerto para la comunicación entre varias instancias del mismo programa. Ahora, simplemente podría elegir un número fijo e ir con él. Pero me pregunto si hay una forma de elegir dinámicamente el número de puerto, para no tener que molestar a mis usuarios con el establecimiento del número de puerto.¿Elige dinámicamente el número de puerto?
Aquí hay una idea que tuve, que funciona así:
- Hay una A. Programa
- aperturas 'MyApp', fija el número de puerto inicial trata de agarrar el puerto A.
- Si tiene éxito , entonces es la primera instancia de 'MyApp'. Hecho.
- Si falla, pregunta por el puerto A si el programa en A es una instancia de 'MyApp'. Si es así, comuníquese con esa instancia. Hecho. Si no, intente agarrar el puerto A + 1. Y si hay otro programa que usa ese puerto (tampoco una instancia de 'MyApp'), entonces tome A + 2, luego A + 3, y así sucesivamente.
¿Tiene sentido esta estrategia? ¿O hay una mejor manera de elegir dinámicamente un número de puerto?
No es necesario que lo haga. Si crea un socket, el sistema automáticamente le asignará el siguiente número de puerto disponible. Lea detenidamente la documentación de la API de socket que está utilizando. También proporcione más etiquetas en el lenguaje de programación/biblioteca que está utilizando. –
@dma_k: en Java, aparentemente tiene que vincularse al puerto 0 para lograr eso (contra-intuitivo, lo sé). Si no lo haces, no podrás escucharlo. :-P –
Prácticamente toda la implementación de socket que puedo recordar utiliza este truco "contraintuitivo" para pedir un puerto asignado dinámicamente ... nada tan especial aquí. – jldupont