libnet下有关LIBNET_LINK和LIBNET_RAW4选项的、发送数据包成功但wireshark捕获不到的问题

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抓到数据包啦!也可以再代码中,不去用系统默认的网卡,自己系统用以太网卡!

你可能感兴趣的:(工作,虚拟机,网络,tcp,null)