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