请问,我编了一个数据包扑获的程序,在window 2000或是2003下均能扑获到数据包,可是在XP系统下就不好使
下面的语句总是返回SOCKET_ERROR错误代码,
int ret = recv(pMoniter->sock,recvBuff, sizeof(recvBuff), 0);
用WSAGetLastError(),得到的错误代码为10060,连接超时
请问,这是什么原因呀.为什么只在xp系统下出现这个问题?

解决方案 »

  1.   

    查看了,windows防火墙没开,我在2003 server系统上也试了,也不能扑获到数据包.
    现在只能在2000的系统下,程序才能正常工作.
    下面是实现扑获所有经过网卡的数据包的语句
    #define    SIO_RCVALL  _WSAIOW(IOC_VENDOR,1)  //混杂模式 DWORD dwBufferLen[10] ;
    DWORD dwBufferInLen= 1 ;
    DWORD dwBytesReturned = 0 ;
      if(WSAIoctl(sock,SIO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),
          &dwBytesReturned,NULL,NULL)!=0)
      {
      error=WSAGetLastError();
      sprintf(errbuf,"wsaioctl() error:%d",error);
      m_sError=errbuf;
      return false;
      }
    请高手帮个忙,谢谢.为什么会出现这个问题