1、问题描述:
在l=libnet(LIBNET_LINK,NULL,errbuf)是返回的l不等于NULL;而l=libnet(LIBNET_RAW4,NULL,errbuf)时返回的是NULL,且提示初始化失败
原因:
libnet里面提供了两个类型的初始化,一个是链路层的LIBNET_LINK,一个是网络接口层的LIBNET_RAW4,在初始化函数libnet_init()中,如果用LIBNET_LINK这个接口类型其中会调用了一个libnet_select_device(l) 的函数来得到网络设备,而在LIBNET_RAW4中会调用一个PacketOpenAdapter(l->device)的函数来打开网络设备,因为我的机子网卡有两个所以会出现找不到网络设备,因为它是采用默认的第一个网络设备来完成这个调用的,所以不是当前正确使用的网卡,返回失败。
2、问题描述:
用网络安全开发包详解中的教程中的sample的tcp1.exe发送数据包,显示的是发送成功,但是用wireshark确捕获不到这个数据包。
原因:可用在代码中,采用系统中的第一块网卡去发送数据包,而第一块网卡不是你的当前网卡,或者是没有在工作。我由于以前装过虚拟机,所以代码就会用我的虚拟网卡去捕获数据包,当我把虚拟网卡禁用掉之后,就可以用wireshark抓到数据包啦!也可以再代码中,不去用系统默认的网卡,自己系统用以太网卡!