【问题标题】:Port to Service Name in Java?端口到Java中的服务名称?
【发布时间】:2011-03-24 12:12:49
【问题描述】:

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

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

【问题讨论】:

  • +1 表示结构良好的问题

标签: java service ip-address ports hosts


【解决方案1】:

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

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

【讨论】:

  • 我认为该请求是针对不涉及解析 /etc/services 文件的解决方案
【解决方案2】:

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

【讨论】:

  • 如果可能,它会尝试使用本机函数,然后回退到直接解析 /etc/services,最后使用内置表,以便在既无法使用本机代码也无法访问文件系统的环境中使用。
猜你喜欢
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 2017-02-22
  • 2020-06-15
相关资源
最近更新 更多