我在公司里面的机器里运行  
          l = libnet_init(
            LIBNET_RAW4,                            /* injection type */
            device,                                 /* network interface */
            errbuf);                                /* errbuf */
是正常的,但是如果我改变injection  type  变成下面  
    l = libnet_init(
            LIBNET_LINK,                            /* injection type */
            device,                                 /* network interface */
            errbuf);                                /* errbuf */
就会报Unhandled  exception  at  0x1000a0ce  (Libnet.dll)  in  tcp1.exe:  0xC0000005:  Access  violation  reading  location  0xfffffe64.错误。  
请问为什么啊?  
 
另外我回家在家中的电脑上运行,两种injection  type  都抱错,难道这个和硬件相关,我不能从数据链路层进行组包?不会吧!
哪位仁兄能指教一下阿,小弟在此拜过!

解决方案 »

  1.   

    这个问题别人没办法帮你,除非你帖出 libnet_init函数的代码或许别人可以帮到你。
      

  2.   

    0xC0000005 应该是内存方面的吧,仔细检查一下赋值,字符串操作什么的。LINUX吓编程不太熟悉。在WINDOW吓0xC0000005 肯定是内存操作除了问题
      

  3.   

    一般通过winpcap获得的网络接口名的形式为rpcap://\Device\NPF_{4BCCA4A3-****-42FB-A70B-63B435F74A66}
    实际上,网络接口名称应该去掉前面的rpcap://,跟一下你获得的device名称,看看是不是包含rpcap://,如果是的话,去掉头保留\Device\NPF_{4BCCA4A3-****-42FB-A70B-63B435F74A66}应该就可以了