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

问题描述 投票:2回答:2

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

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

我不想提出if-else

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

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

java service mapping port
2个回答
0
投票

它取决于它是什么类型的Linux机器.lsof可以告诉列表打开文件,包括ports.You然后可以解析输出以获取系统中的命令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

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.