getprotobyname 以及struct protoent结构

相关函数:getprotobyname, getprotoent, setprotoent, endprotoent
表头文件:#include <netdb.h>
函数定义:struct protoent *getprotobynumber(int proto)
函数说明:getprotobynumber()会返回一个protoent结构,参数proto为欲查询的网络协议编号。此函数会从 /etc/protocols中查找符合条件的数据并由结构protoent返回。 结构protoent定义请参getprotoent()
返回值   :成功则返回protoent结构指印,若有错误或找不到各个符合的数据则返回NULL指针

范例:
/*取得协议编号0到4的协议数据*/

#include <netdb.h>
main()
{
    int number;
    struct protoent *protocol;
    for(number=0; number<5; number++)
   {
       protocol = getprotobynumber(number);
       if(protocol == (struct protoent * ) NULL) continue;
       printf("%2d: %-10s: %-10s/n", protocol->p_proto, protocol->p_name, protocol->p_aliases[0]);
   }
}

 

例如 :6  对应名字是  tcp

17  对应名字是 UDP

 

 

struct protoent结构

在snort.c中的函数void InitProtoNames()的作用是取得协议名放在protocol_names[256]       
struct protoent { 
        char *       p_name; //名称
        char *               p_aliases; //别名
        short *       p_proto; //编号
       }  
getprotobyname():依照通讯协定 (protocol) 的名称来获取该通讯协定的其他资料。 
  格 式: struct protoent * getprotobyname( const char *name ); 
  参 数: name   通讯协定名称 
  传回值: 成功 - 一指向 struct protoent 的指针 

       失败 - NULL  说明: 利用通讯协定的名称来得知该通讯协定的别名、编号等资料。 
getprotobynumber():依照通讯协定的编号来获取该通讯协定的其他资料。 
  格 式: struct protoent * getprotobynumber( int number ); 
  参 数: number  以 host 排列方式的通讯协定编号 
  传回值: 成功 - 一指向 struct protoent 的指针 
       失败 - NULL  
  说明: 利用通讯协定的编号来得知该通讯协定的名称、别名等资料。 

另外,:-)
toupper(char c)将字符c转换为大写英文字母。
d = strdup(char * s)复制字符串s到d,返回指向被复制的字符串的指针,所需空间由malloc()分配且可以由free()释放。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值