首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2014-01-14 
【求助】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上还可以用用。

热点排行