服务名称到Java中的端口号映射

时间:2015-02-17 16:58:07

标签: java service mapping port

我正在开发一个程序来监控Linux机器上的网络连接。我正在阅读/ proc文件。

所以我的问题是我可以获取端口号但是我想为它分配它的相应服务名称(忽略服务可以配置为在不同的端口上运行)。

我不想提出if-else

if(port == 80){protocol =“HTTP”;}

我希望有一个查找机制,它将接受端口号并返回服务名称。我怎样才能实现它?我不是在寻找Hashtable或Map或属性文件。

2 个答案:

答案 0 :(得分:0)

这取决于它是什么类型的Linux机器.lsof可以告诉列表打开文件,包括ports.you然后可以解析输出以获取系统中的COMMAND TCP / UDP活动端口 对于ipv4,对于ipv6

lsof -Pnl +M -i4, lsof -Pnl +M -i6 respectivly

COMMAND     PID     USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
java      2432042      494   45u  IPv6 34535      0t0  TCP *:8080 (LISTEN)
sshd      201340        0    4u  IPv6  3123421      0t0  TCP *:22 (LISTEN)
ntpd       5462       38   17u  IPv6     47202      0t0  UDP *:123

答案 1 :(得分:0)

我认为没有类似的事情,因为可以将通常在端口80上侦听的HTTP服务器设置为侦听任何端口。在这种情况下,您如何知道它是HTTP服务还是其他服务。您会尝试测试所有现有协议吗?我不这么认为。