win7 下怎么设置SOCKET才能监听所有IP包

【求助】win7 下如何设置SOCKET才能监听所有IP包
我想监听本机上的所有数据包,查资料后设置如下,但是只能监听发出去的包不能监听收到的包,请教要如何设置。我才接触网络部分,求指点!


WSADATA wsData;
WSAStartup(MAKEWORD(2,2),&wsData);
//建立套接字
SOCKET sock;
sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP);
BOOL flag=TRUE;
//设置IP头操作选项,用户可对IP头处理
setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag));
char hostName[128];
gethostname(hostName,100);
//获取本地地址
hostent * pHostIP;
pHostIP=gethostbyname(hostName);
//填充SOCKADDR_IN结构
sockaddr_in addr_in;
addr_in.sin_addr=*(in_addr*)pHostIP->h_addr_list[0];
addr_in.sin_family=AF_INET;
addr_in.sin_port=htons(6000);
bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in));
//把socket绑定到本地网卡
DWORD dwValue=1;
//设置SOCK_RAW为SIO_RCVALL,能接收所有IP包
#define IO_RCVALL _WSAIOW(IOC_VENDOR,1)
DWORD dwBufferLen[10];
DWORD dwBufferInLen=1;
DWORD dwBytesReturned=0;
WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL);

------解决方案--------------------
WinPcap
------解决方案--------------------
Include\WinSock.h
    387: /*
    388:  * Types
    389:  */
    390: #define SOCK_STREAM     1               /* stream socket */
    391: #define SOCK_DGRAM      2               /* datagram socket */
    392: #define SOCK_RAW        3               /* raw-protocol interface */
    393: #define SOCK_RDM        4               /* reliably-delivered message */
    394: #define SOCK_SEQPACKET  5               /* sequenced packet stream */

------解决方案--------------------
引用:
Quote: 引用:
用的就是 SOCK_RAW 应该是没问题的吧?第一次用SOCKET这东西,不太了解,但看了不少的教程都是这样说的
win 7上已经无法使用raw这个东西了,被微软除名了,xp上还可以用用。