我按照网上的代码编了一个截获数据包的程序,但是参考的代码建立socket这样写的:  
sock  =  socket(AF_INET,  SOCK_RAW,  IPPROTO_RAW);  
但是我的程序在执行到recv的函数时,就接收不到数据。  
而我把IPPROTO_RAW改为IPPROTO_IP时,就可以接收,只是不能识别是哪个协议。
我跟踪了一下,发现协议号是28,vc中没有定义。这是怎么回事?请高手指点。谢谢  
 
参考的程序代码网页:http://www.chinaoak.com/download/sources/network/hacker/netdetect.doc

解决方案 »

  1.   

    改为IPPROTO_IP是正确的楼主所谓的“协议号”是指的什么协议号?哪一层的?
      

  2.   

    那个文档写错了,本来就应该是IPPROTO_IP,你可以参考codeguru的ipmon
      

  3.   

    原始套接字接受用IPPROTO_IP
    发送用IPPROTO_RAW
      

  4.   

    呵呵,网上流传的文章害人啊楼主可以到我的blog去看看我写了一个截获数据包的入门文章^_^http://blog.csdn.net/PiggyXP