2010-08-03 3 views
6

Мои услуги файл (C: \ WINDOWS \ system32 \ Drivers \ Etc \ Services) имеет кучу порт для отображения услуг:Port to Service Name в 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 

Я пытаюсь найти способ преобразования из порта в Службу Назовите программно через API Java (вместо синтаксического анализа) или сторонних библиотек?

псевдокод:

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

Есть ли хороший способ для достижения этой цели?

+0

+1 для хорошо структурированного queston –

ответ

2

Что вы ищете является реализацией Java системного вызова Linux getservbyport(). Взгляните на http://github.com/wmeissner/jnr-netdb. Кроме того, выполните поиск в Google для java getservbyport

+0

Он пытается использовать нативные функции, если это возможно, падает назад к разбору /etc/services и, наконец, к встроенной таблице для использования в средах , где невозможно использовать ни родной код, ни доступ к файловой системе. – YoK

0

Я не думаю, что для этой цели есть API в java. Вам нужно будет либо проанализировать этот файл, либо поддерживать сопоставление служб портов в некоторой форме (файл свойств, db и т. Д.). пример для разбора из системного файла:

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

+0

Я думаю, что запрос был предназначен для решения, которое не включало анализ файла/etc/services. –