基本信息
源码名称:sniffer网络数据监听工具源码(MySniffer)
源码大小:49.94M
文件格式:.rar
开发语言:C/C++
更新时间:2019-07-28
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 2 元 
   源码介绍


//【7】开始捕获数据包
 WaitForSingleObject(hECapEvent, INFINITE);   //等待事件,用于StopECap时判断ECap是否已经返回并释放事件
 b_ECapStartRun = true; //ECap线程成功开启过,用于ECapStop按钮是否显示“ECap已关闭”,如果没成功开启过ECap线程则不必显示

 while ((m_WinpCapRtn = pcap_next_ex(m_AdapterHandle, &m_PacketHeader, &m_PacketData)) >= 0)
 {
  long m_PocketLen = m_PacketHeader->len;
  if (m_NonePacketCount > 1000)//超时判断
  {
   AfxMessageBox(_T("WinpCap等待时间过长,请检查硬件连接,确认无误后重新点击开始抓取按钮!"));
   ::PostMessage(AfxGetApp()->m_pMainWnd->m_hWnd, WM_WinpCapToMainControl, true, 0); //显示结果
   break;
  }


  if (m_WinpCapRtn == 0)//返回值判断,为0表示没有抓取到数据
  {
   m_NonePacketCount ;

   if (b_ECapStopRun)   //关闭线程
   {
    break;
   }
   continue;

  }

  m_NonePacketCount = 0;
  m_PacketCount ;
  //向Main发送消息,用于抓取到数据包个数更新
  ::PostMessage(AfxGetApp()->m_pMainWnd->m_hWnd, WM_WinpCapToMainListBoxPockedNum, m_PacketCount, NULL);//显示数据包
  //向Main发送消息,用于抓取到数据与时间同步更新到UI界面的ListBox空间中
  ::PostMessage(AfxGetApp()->m_pMainWnd->m_hWnd, WM_WinpCapToMainListBox, m_PocketLen, (LPARAM)m_PacketData);//显示数据包

  if (b_ECapStopRun)   //关闭线程
  {
   break;
  }
  //每300ms调用一次报文抓取函数;
  Sleep(300);
  CMySnifferDlg *pDlg = (CMySnifferDlg *)AfxGetApp()->GetMainWnd();
  pDlg->ShowPacketList(m_PacketHeader, m_PacketData);
  pDlg = NULL;
 }
 SetEvent(hECapEvent);      //ECap事件置位
 return 0;