6

我的服务文件(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

我正在尝试找到一种通过 Java API(而不是解析)或第三方库以编程方式将端口转换为服务名称的方法?

伪代码:

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

有什么好的方法可以做到这一点吗?

4

2 回答 2

2

您正在寻找的是 Linuxgetservbyport()系统调用的 Java 实现。看看http://github.com/wmeissner/jnr-netdb。另外,做一个谷歌搜索java getservbyport

于 2010-08-03T04:20:31.687 回答
0

我认为java中没有为此目的的一些API。您将需要解析此文件或以某种形式(属性文件、db 等)维护端口服务映射。从系统文件解析的示例是:

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

于 2010-08-03T03:16:11.087 回答