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()释放。

阅读(1230)| 评论(0)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
struct 是一种用户自定义的数据类型,用于封装多个不同类型的数据成员。在 C++ 中,struct 的构造函数用于初始化 struct 的实例化对象。 struct 的构造函数与类的构造函数相似,用于在创建对象时对数据成员进行初始化。通过在 struct 中声明和定义构造函数,可以方便地初始化对象的数据成员,提高代码的可读性和重用性。 struct 的构造函数可以有以下特点: 1. 构造函数函数名与 struct 的名称相同,并且没有返回类型(连 void 也没有)。 2. 构造函数可以有多个重载版本,根据参数的不同进行区分。 3. 构造函数可以有默认参数,使部分参数可以省略。 4. 构造函数可以在构造时执行一些初始化操作,例如给数据成员赋初值、打开文件、分配内存等。 使用 struct 构造函数可以在创建对象时,直接传入参数进行初始化,而无需通过额外的成员函数进行赋值操作。这样可以简化代码,并且保证了对象的初始化过程的一致性。 例如,定义一个 struct Person,其中包含了姓名和年龄两个数据成员。可以通过定义构造函数来初始化这两个成员: struct Person { string name; int age; Person(string n, int a) { name = n; age = a; } }; 通过定义了一个带有两个参数的构造函数,可以在创建 Person 对象时,直接传入参数进行初始化: Person p1("张三", 20); Person p2("李四", 25); 这样就可以通过 struct 构造函数来方便地初始化对象的数据成员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值