2010-08-03 18 views
6

Mi archivo de servicios (C: \ WINDOWS \ system32 \ drivers \ etc \ services) tiene un montón de Puerto de asignaciones de servicio:Nombre de puerto a servicio en Java?

echo    7/tcp 
echo    7/udp 
discard    9/tcp sink null 
discard    9/udp sink null 
systat    11/tcp users     #Active users 
systat    11/udp users     #Active users 
daytime   13/tcp 
daytime   13/udp 
qotd    17/tcp quote     #Quote of the day 
qotd    17/udp quote     #Quote of the day 
chargen   19/tcp ttytst source   #Character generator 

Estoy tratando de encontrar una manera de convertir de un puerto en el servicio Nombre programáticamente a través de API de Java (en lugar de analizar) o bibliotecas de terceros

Pseudocódigo:

Port port = new Port("443","tcp"); 
String service = port.getService(); 
System.out.println(service); //prints "https" 

¿Hay alguna buena manera de lograr esto?

+0

+1 para queston bien estructurado –

Respuesta

2

Lo que se busca es una implementación de Java de la llamada al sistema de Linux getservbyport(). Eche un vistazo al http://github.com/wmeissner/jnr-netdb. Además, haga una búsqueda en Google para java getservbyport

+0

Trata de utilizar las funciones nativas si es posible, cayendo volver a analizar /etc/services directamente, y finalmente a una tabla incorporada para usar en entornos donde no es posible acceder al código nativo ni al sistema de archivos. – YoK

0

No creo que haya alguna API en Java para este propósito. Deberá analizar este archivo o mantener la asignación del servicio de puerto de alguna forma (archivo de propiedades, db, etc.). ejemplo para analizar el archivo de sistema es:

http://www.javafaq.nu/java-example-code-162.html

+0

Creo que la solicitud fue para una solución que no implicó el análisis del archivo/etc/services –

Cuestiones relacionadas