Имя порта для службы в Java? - PullRequest
6 голосов
/ 03 августа 2010

Файл моих служб (C: \ WINDOWS \ system32 \ drivers \ etc \ services) содержит несколько сопоставлений портов и служб:

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"

Есть ли хороший способ сделать это?

Ответы [ 2 ]

2 голосов
/ 03 августа 2010

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

0 голосов
/ 03 августа 2010

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

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

...