我正在开发一个程序来监控Linux机器上的网络连接。我正在阅读/ proc文件。
所以我的问题是我可以获取端口号但是我想为它分配它的相应服务名称(忽略服务可以配置为在不同的端口上运行)。
我不想提出if-else
if(port == 80){protocol =“HTTP”;}
我希望有一个查找机制,它将接受端口号并返回服务名称。我怎样才能实现它?我不是在寻找Hashtable或Map或属性文件。
答案 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服务还是其他服务。您会尝试测试所有现有协议吗?我不这么认为。