首页 > 其他 > 详细

协议名称处理函数xxxprotoxxx()

时间:2014-03-09 06:22:50      阅读:564      评论:0      收藏:0      [点我收藏+]

为了方便操作,Linux提供了一组用于查询协议的值及名称的函数。

xxxprotoxxx()函数:

bubuko.com,布布扣

上面的函数对文件/etc/protocols中的记录进行操作,文件中记录了协议的名称、值和别名等值,与struct protoent的定义一致。

bubuko.com,布布扣

 

使用协议族函数的例子:

首先,使用setprotoent(1)打开文件/etc/protocols,然后使用函数getprotobyname()查询函数并显示出来,最后使用函数endprotoent()关闭文件/etc/protocols。

bubuko.com,布布扣
#include <netdb.h>
#include <stdio.h>

void
display_protocol(struct protoent *pt)
{
    int i = 0;
    
    if(pt)
    {
        printf("protocol name: %s", pt->p_name);
        if(pt->p_aliases)
        {
            printf("alias name:");
            while(pt->p_aliases[i])
            {
                printf("%s ", pt->p_aliases[i]);
                i++;
            }
        }
        printf(", value: %d\n", pt->p_proto);
    }
}


int
main(int argc, char **argv)
{    
    int i = 0;
    
    const char *const protocol_name[] = { "ip", "icmp", "tcp", "udp", NULL };
    
    setprotoent(1);
    while(protocol_name[i] != NULL)
    {
        struct protoent *pt = getprotobyname((const char *)&protocol_name[i][0]);
        if(pt)
        {
            display_protocol(pt);
        }
        i++;
    }
    endprotoent();
    return(0);
}
bubuko.com,布布扣

运行结果:

bubuko.com,布布扣

协议名称处理函数xxxprotoxxx(),布布扣,bubuko.com

协议名称处理函数xxxprotoxxx()

原文:http://www.cnblogs.com/nufangrensheng/p/3588247.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!