1.2.4 输出系统错误信息
if (errno)
{
perror(" ");
}
其中,errno宏用于保存程序在运行中的错误代码(error code),以及用于显示错误信息的字符串。当程序运行时,errno宏被设置为0,一旦程序发生了系统级的错误,errno宏就会被设置为其它值。perror()函数显示标准错误输出流stderr中的错误信息。关于errno宏和perror()函数的详细解释,请参考《C语言中errno与perror()函数》
1.2.5 清空stderr流
最后调用fflush()函数清空stderr流,为下次调用holler()函数做准备。
fflush(stderr);
2 bail()函数
在bail()函数中,调用holler()函数显示错误信息,之后优雅地关闭网络套接字。
2.1 函数格式
bail()函数的格式为
void bail(char* str, char* p1=NULL, char* p2 = NULL, char* p3 = NULL, char* p4 = NULL, char* p5 = NULL, char* p6 = NULL)
bail()函数的格式与holler()函数类似。
2.2 显示错误信息
在bail()函数中,首先将-v参数的标志o_verbose的值设置为1,之后调用holler()函数显示错误信息。
o_verbose = 1;
holler(str, p1, p2, p3, p4, p5, p6);
2.3 优雅地关闭套接字
shutdown(netfd, 0x02);
closesocket(netfd);
close(netfd);
其中,netfd是netcat间用于通信的套接字。关于优雅关闭套接字的相关知识,请参考《VS2015中Winsock编程之优雅关闭套接字》。