2010-08-03 7 views
6

Meine Dienste Datei (C: \ WINDOWS \ system32 \ drivers \ etc \ services) hat eine Reihe von Port-Service-Mappings:Port-zu-Service-Name in 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 

Ich versuche, einen Weg zu finden, von einem Hafen zum Service konvertieren Programmgesteuert über Java-APIs (statt Parsing) oder Bibliotheken von Drittanbietern?

Pseudocode:

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

Gibt es eine gute Möglichkeit, dies zu erreichen?

+0

+1 für gut strukturierte queston –

Antwort

2

Was Sie suchen ist eine Java-Implementierung des Linux-getservbyport() Systemaufruf. Werfen Sie einen Blick auf http://github.com/wmeissner/jnr-netdb. Auch für java getservbyport

+0

Es wird versucht, die nativen Funktionen wenn möglich zu verwenden, fallen Zurück zum Parsen /etc/services direkt und schließlich zu einer eingebauten Tabelle für den Einsatz in Umgebungen , wo weder nativen Code, noch Dateisystemzugriff möglich ist. – YoK

0

Ich glaube nicht, dass es einige API in Java für diesen Zweck gibt. Sie müssen diese Datei entweder parsen oder die Port-Service-Zuordnung in irgendeiner Form verwalten (Eigenschaftendatei, db usw.). Beispiel von Systemdatei zu analysieren ist:

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

+0

eine Google-Suche Ich denke, die Anforderung für eine Lösung, die nicht beinhaltete Parsen der Datei/etc/services-Datei –