写一个RAW SOCKET程序时,遇到的一个问题。
在接收的时候,出了问题。
1、
sniffersock = socket( AF_INET , SOCK_RAW , IPPROTO_IP )
2、
setsockopt( sniffersock , SOL_SOCKET , SO_RCVTIMEO , (const char *)&rcvtimeo , sizeof(rcvtimeo) )
3、
bind(sniffersock,(PSOCKADDR)&sa, sizeof(sa))
4、
WSAIoctl( sniffersock, SIO_RCVALL , &dwBufferInLen, sizeof(dwBufferInLen),
&dwBufferLen, sizeof(dwBufferLen),
&dwBytesReturned , NULL , NULL ) )
5、
int nRet = recv(sniffersock,buff,1024,0);
if(nRet = SOCKET_ERROR)
{
TRACE("接收错误!%d\n",WSAGetLastError());
}
前4步都没有出任何的问题。
到了第5步,老是返回的一个-1.我看了一下WSAGetLastError()。但是返回的也只是一个0。
这个是为什么呢?