使用Winpcap获取本地IP和子网掩码的简单程序

使用Winpcap获取本地IP和子网掩码的简单程序
原文链接:http://hi.baidu.com/%CF%FE%D4%C2%B7%C9%B7%C9/blog/item/445623fb868e49d4b58f3148.html

#include <pcap.h>

void main()
{
char error_content[PCAP_ERRBUF_SIZE]; //这个在pcap.h中就定义了大小256
struct in_addr net_ip_address; //网络地址 为什么这么定义呀,原因是我们要使用winsock中的inet_ntoa函数了,
struct in_addr net_mask_address; //子网掩码地址 ,这个道理同上了
char *net_interface; //网络接口 为什么用指针,简单,函数返回值。没法子的。
char *net_ip_string; //网路地址 道理同上
char *net_mask_string; //网络掩码 道理同上的了
u_int32_t net_ip;   //这个是套用函数返回后的网络地址
u_int32_t net_mask; //这个也是套用函数返回后的子网地址
net_interface=pcap_lookupdev(error_content); //这个返回的是个指针,所以net_interface申明的是个指针。
pcap_lookupnet(net_interface,&net_ip,&net_mask,error_content); //这个就是用函数获得了网络地址和子网掩码,其返回的数据都放在net_ip和net_mask中的了,

net_ip_address.s_addr=net_ip; //这个就是in_addr中的内部存放方式了,s_addr 主机地址格式为u_long型的
net_ip_string=inet_ntoa(net_ip_address); //这个是winsocket中的,内部参数是in_addr的,返回一个指针,指向字符串且包含“.”字符
printf("网络地址:%s\n",net_ip_string); //很简单了,就是打印了输出
net_mask_address.s_addr=net_mask; //这个道理同上了, net_mask_string=inet_ntoa(net_mask_address); // 道理同上,就是用这个转化一下了
printf("网路掩码:%s\n",net_mask_string); //简单的输出
}

程序显示的结果也就是简单的显示一下你的网络Ip和子网掩码了,很简单,主要是在编译的时候注意了,我用的VS2005 编译的,在这个项目属性页中,需要我们手动添加Include的文件夹,指向一个我们的开发包“E:\我的网络监测系统\WpdPack\Include”,在Lib,就是链接器的目录中手动添加这个“E:\我的网络监测系统\WpdPack\Lib”,同时,我们还要自己添加静态链接库,在链接器的输入里,附加依赖项中,手动添加“wpcap.lib wsock32.lib”,好了,这个就是使用Winpcap开发的基本步骤了,当然可能大部分用的是VC6编译的,其实意思一样的了,找到,添加就好了。呵呵,自己多多努力了。


你可能感兴趣的:(c,String,网络,struct,include,interface)