协议名称处理函数

 1 #include<stdio.h>
 2 #include<netdb.h>
 3 
 4 void display_protocol(struct protoent *pt)
 5 {
 6     int i=0;
 7     if(pt)
 8     {
 9         printf("protocol name:%s",pt->p_name);
10         if(pt->p_aliases)
11         {
12             printf("alias name:");
13             while(pt->p_aliases[i])
14             {
15                 printf("%s",pt->p_aliases[i]);
16                 i++;
17             }
18         }
19         printf(",value:%d\n",pt->p_proto);
20     }
21 }
22 
23 int main(int argc,char *argv[])
24 {
25     int i=0;
26     const char *const protocol_name[]=
27     {
28         "ip",
29         "icmp",
30         "igmp",
31         "ggp",
32         "ipencap",
33         "st",
34         "tcp",
35         "egp",
36         "igp",
37         "pup",
38         "udp",
39         "hmp",
40         "xns-idp",
41         "rdp",
42         "iso-tp4",
43         "xtp",
44         "ddp",
45         "idpr-cmtp",
46         "ipv6",
47         "ipv6-route",
48         "ipv6-frag",
49         "idrp",
50         "rsvp",
51         "gre",
52         "esp",
53         "ah",
54         "skip",
55         "ipv6-icmp",
56         "ipv6-nonxt",
57         "ipv6-opts",
58         "rspf",
59         "vmtp",
60         "eigrp",
61         "ospf",
62         "ax.25",
63         "ipip",
64         "etherip",
65         "encap",
66         "pim",
67         "ipcomp",
68         "vrrp",
69         "12tp",
70         "isis",
71         "sctp",
72         "fc",
73         NULL};
74     setprotoent(1);//设置协议文件打开状态
75     while(protocol_name[i]!=NULL)
76     {
77         struct protoent *pt=getprotobyname((const char *)&protocol_name[i][0]);//按照协议名称name,匹配文件/etc/protocols 中的选项,返回匹配项
78         if(pt)
79         {
80             display_protocol(pt);//打印pt的相关信息
81         }
82         i++;
83     }
84     endprotoent();//关闭协议
85     return 0;
86 }

程序运行结果:

 1 protocol name:ipalias name:IP,value:0
 2 protocol name:icmpalias name:ICMP,value:1
 3 protocol name:igmpalias name:IGMP,value:2
 4 protocol name:ggpalias name:GGP,value:3
 5 protocol name:ipencapalias name:IP-ENCAP,value:4
 6 protocol name:stalias name:ST,value:5
 7 protocol name:tcpalias name:TCP,value:6
 8 protocol name:egpalias name:EGP,value:8
 9 protocol name:igpalias name:IGP,value:9
10 protocol name:pupalias name:PUP,value:12
11 protocol name:udpalias name:UDP,value:17
12 protocol name:hmpalias name:HMP,value:20
13 protocol name:xns-idpalias name:XNS-IDP,value:22
14 protocol name:rdpalias name:RDP,value:27
15 protocol name:iso-tp4alias name:ISO-TP4,value:29
16 protocol name:xtpalias name:XTP,value:36
17 protocol name:ddpalias name:DDP,value:37
18 protocol name:idpr-cmtpalias name:IDPR-CMTP,value:38
19 protocol name:ipv6alias name:IPv6,value:41
20 protocol name:ipv6-routealias name:IPv6-Route,value:43
21 protocol name:ipv6-fragalias name:IPv6-Frag,value:44
22 protocol name:idrpalias name:IDRP,value:45
23 protocol name:rsvpalias name:RSVP,value:46
24 protocol name:grealias name:GRE,value:47
25 protocol name:espalias name:IPSEC-ESP,value:50
26 protocol name:ahalias name:IPSEC-AH,value:51
27 protocol name:skipalias name:SKIP,value:57
28 protocol name:ipv6-icmpalias name:IPv6-ICMP,value:58
29 protocol name:ipv6-nonxtalias name:IPv6-NoNxt,value:59
30 protocol name:ipv6-optsalias name:IPv6-Opts,value:60
31 protocol name:rspfalias name:RSPFCPHB,value:73
32 protocol name:vmtpalias name:VMTP,value:81
33 protocol name:eigrpalias name:EIGRP,value:88
34 protocol name:ospfalias name:OSPFIGP,value:89
35 protocol name:ax.25alias name:AX.25,value:93
36 protocol name:ipipalias name:IPIP,value:94
37 protocol name:etheripalias name:ETHERIP,value:97
38 protocol name:encapalias name:ENCAP,value:98
39 protocol name:pimalias name:PIM,value:103
40 protocol name:ipcompalias name:IPCOMP,value:108
41 protocol name:vrrpalias name:VRRP,value:112
42 protocol name:isisalias name:ISIS,value:124
43 protocol name:sctpalias name:SCTP,value:132
44 protocol name:fcalias name:FC,value:133

你可能感兴趣的:(协议名称处理函数)