我要获取在从输入接收的特定端口中工作的守护进程(可能是它的版本)。像“22”这样的东西 - > “SSH”。
我该怎么办?
答案 0 :(得分:0)
尝试这样的事情:
#include <netdb.h>
char servname[50];
struct addrinfo *ai;
getaddrinfo(0, "22", 0, &ai);
getnameinfo(ai->ai_addr, ai->ai_addrlen, 0, 0, servname, sizeof servname, 0);
freeaddrinfo(ai);
注意:此代码不完整。您应检查错误,如果您的端口号最初是整数而不是字符串,则可以使用snprintf
将十进制字符串传递给getaddrinfo
。
与旧的getservbyport()
接口不同,我给出的解决方案是线程安全的,可以从库代码中调用。
答案 1 :(得分:0)
目前尚不清楚您是否只想查看本地服务数据库中的端口(如果是,请使用R's answer),或者是否要主动检查端口以尝试确定侦听服务。< / p>
如果是后者,那么最好的方法可能只是针对本地感兴趣的端口运行nmap
。