netcat中输出错误信息的函数(2-1)

在netcat中,使用holler()函数与bail()函数来输出错误信息。

1 holler()函数

1.1 函数格式

holler()函数的格式为

void holler(char* str, char*  p1 = NULL, char* p2 = NULL, char* p3 = NULL, char*  p4 = NULL, char* p5 = NULL, char* p6 = NULL)

其中,参数str及p1-p6均为要输出的错误信息,其中p1-p6都有初始值,也就是说holler()函数可以使用1-7个参数均可,是一个“伪变参数的函数”。

1.2 函数实现

1.2.1 netcat是否带有-v参数

在holler()函数中,首先对变量o_verbose进行判断,如果netcat带有-v参数,即需要输出详细信息时,o_verbose的值是非零,否则为零。

if (o_verbose)

{

......

}

从代码中可以看出,只有当o_verbose的值是非零,即netcat带有-v参数时holler()函数才会起作用。

1.2.2 输出自定义的错误信息

当o_verbose的值是非零时,调用fprintf()函数,通过stderr输出自定义的错误信息。

fprintf(stderr, str, p1, p2, p3, p4, p5, p6);

其中,fprintf()和stderr请参考《C++中fprintf()函数与stdout、stderr》

1.2.3 输出网络套接字错误信息

if (h_errno)

{

fprintf(stderr, "%s\n", winsockstr(h_errno));

}

其中,h_errno是WSAGetLastError()函数的返回值,关于h_errno的详细讲解,请参考《Winsock套接字编程中的h_errno》

如果发生了网络套接字错误,则h_errno的值是零,则调用fprintf()函数,通过stderr输出错误信息。winsockstr()函数是自定义的函数,该函数的格式为

char * winsockstr(int error)

在winsockstr()函数定义中,根据参数error的值返回不同的错误信息。

char * winsockstr(int error)

{

switch (error)

{

case WSAEINTR: return("INTR          ");

case WSAEBADF: return("BADF          ");

.....

}

}

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值