主机的主机名

Hasitha Shan

我的项目陷入了一个小死胡同。我需要检索网络中任何给定设备(带有linux内核)的受支持协议。我知道该getprotobyname方法可以完成工作,但是据我目前的了解,我仅成功实现了该方法,以获取运行代码的本地计算机的协议详细信息。代码如下,

#include <stdio.h>
#include <netdb.h>

int main (int argc, char *argv[]) {

        int i;
    struct protoent *proto = getprotobyname("ipv6");
    if ( proto != NULL )
    {
        printf("Official name: %s\n", proto->p_name);
        printf("Port#: %d\n", proto->p_proto);
        for ( i = 0; proto->p_aliases[i] != 0; i++ )
        .
    printf("Alias[%d]: %s\n", i+1,
            proto->p_aliases[i]);
    }
    else
        perror("protocol not found");
}

我的查询是如何实现此解决方案,在该解决方案中我可以解析目标设备的IP地址,以便getprotobyname可以尝试识别目标设备协议。非常感谢任何示例代码段或参考。解决这个问题将使我不堪重负,并再次感谢:)

编辑

执行我的要求的任何其他方法也将非常有帮助:)

制造商

简而言之:你不能。

getprotocolbyname() 只是从本地(/ etc / protocols)文本文件(协议名称,ip头协议标识号,...)中检索静态信息,并打算将数字映射到人类可读的协议信息。

任何协议出现在该文件中的事实并不意味着本地计算机完全支持它。这与/ etc / services非常相似,后者将端口号与服务名称匹配。如果服务出现在文件中,则并不表示机器提供了该服务。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章