a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > C > 正文

基于VC實現的網絡監聽功能程序實例

2020-01-26 15:26:28
字體:
來源:轉載
供稿:網友

本文所述VC++網絡監聽器代碼,可以實現監聽網絡連接所使用的協議、源IP地址、目標IP地址等信息的功能,并且能把數據內容綁定到網格控件中顯示。具體功能代碼部分如下所示:

//線程函數UINT ThreadFun( LPVOID pParam ){ CSniffAppDlg* pDlg = static_cast<CSniffAppDlg*>(pParam); MSG msg; char buffer[1000],sourceip[32] ,*tempbuf; char *ptemp; BYTE* pData = NULL; //實際數據報中的數據 UINT sourceport ; CString str; HEADIP*  pHeadIP; HEADICMP* pHeadICMP; HEADUDP*  pHeadUDP; HEADTCP*  pHeadTCP; in_addr addr; int ret; while (TRUE) { pData = NULL; if (PeekMessage(&msg,pDlg->m_hWnd,WM_CLOSE,WM_CLOSE,PM_NOREMOVE )) {  closesocket(pDlg->m_Sock);  break;  } memset(buffer,0,1000); ret = recv(pDlg->m_Sock,buffer,1000,0);  if (ret == SOCKET_ERROR) {  continue; } else //接收到數據 {  tempbuf = buffer;  pHeadIP = (HEADIP*)tempbuf;  //獲取數據報總長度  WORD len = ntohs(pHeadIP->totallen);    //獲取源IP  pDlg->m_List.InsertItem(pDlg->m_List.GetItemCount(),"");  addr.S_un.S_addr = pHeadIP->sourceIP;  ptemp = inet_ntoa(addr);    pDlg->m_List.SetItemText(pDlg->m_List.GetItemCount()-1,1,ptemp);   //獲取目的IP  addr.S_un.S_addr = pHeadIP->destIP;  ptemp = inet_ntoa(addr);  pDlg->m_List.SetItemText(pDlg->m_List.GetItemCount()-1,2,ptemp);    //獲取協議名稱  ptemp = get_protoname(pHeadIP->proto);  strcpy(sourceip,ptemp);  pDlg->m_List.SetItemText(pDlg->m_List.GetItemCount()-1,0,sourceip);    //獲取IP數據報總長度  WORD ipSumLen = ntohs(pHeadIP->totallen);    //IP數據報頭總長度  int ipHeadLen = 20;  //獲得去除IP層數據的長度  WORD netlen = ipSumLen - ipHeadLen;    //根據不同大協議獲得不同協議的數據  switch (pHeadIP->proto)  {  case IPPROTO_ICMP:  {   pHeadICMP = (HEADICMP*)(tempbuf+20);       pData = (BYTE*)(pHeadICMP)+4; //ICMP數據報頭共4個字節      //獲取數據的長度   netlen -= 4;   break;  }  case IPPROTO_UDP:  {   pHeadUDP = (HEADUDP*)(tempbuf+20);    pData = (BYTE*)pHeadUDP+8; //UDP數據報頭共8個字節   sourceport = ntohs(pHeadUDP->SourcePort);   str.Format("%d",sourceport);   //設置源端口   pDlg->m_List.SetItemText(pDlg->m_List.GetItemCount()-1,3,str);    str.Empty();   netlen -= 8;     break;  }  case IPPROTO_TCP:  {   pHeadTCP = (HEADTCP*)(tempbuf+20);   sourceport = ntohs(pHeadTCP->SourcePort);      pData = (BYTE*)pHeadTCP+20; //TCP數據報頭共20個字節   str.Format("%d",sourceport);   //設置源端口   pDlg->m_List.SetItemText(pDlg->m_List.GetItemCount()-1,3,str);    str.Empty();   netlen-= 20;     break;  }       }  //設置數據大小  str.Format("%d",netlen);  pDlg->m_List.SetItemText(pDlg->m_List.GetItemCount()-1,4,str);  str.Empty();  //設置數據  if (pData != NULL)  {  str.Format(" %s",pData);  pDlg->m_List.SetItemText(pDlg->m_List.GetItemCount()-1,5,str);  }  str.Empty(); } } return 0;}void CSniffAppDlg::OnBeginlisten() { //創建套接字 m_Sock = socket(AF_INET,SOCK_RAW, IPPROTO_IP ); char name[128]; memset(name,0,128); hostent* phostent; phostent = gethostbyname(name); DWORD ip; ip = inet_addr(inet_ntoa(*(in_addr*)phostent->h_addr_list[0])); int timeout = 4000; //超時4秒 //設置接收數據的超時時間 setsockopt(m_Sock,SOL_SOCKET,SO_RCVTIMEO,(const char*)&timeout,sizeof(timeout)); sockaddr_in skaddr; skaddr.sin_family = AF_INET; skaddr.sin_port = htons(700); skaddr.sin_addr.S_un.S_addr = ip; //綁定地址 if ( bind(m_Sock,(sockaddr*)&skaddr,sizeof(skaddr))==SOCKET_ERROR) { MessageBox("地址綁定錯誤"); return; } DWORD inBuffer=1; DWORD outBuffer[10]; DWORD reValue = 0; if (WSAIoctl(m_Sock,SIO_RCVALL,&inBuffer,sizeof(inBuffer),&outBuffer,sizeof(outBuffer),&reValue,NULL,NULL)==SOCKET_ERROR) { MessageBox("設置緩沖區錯誤."); closesocket(m_Sock); return; } else m_pThread = AfxBeginThread(ThreadFun,(void*)this);}void CSniffAppDlg::OnCancel(){ if (m_pThread) { //m_pThread->ExitInstance(); delete m_pThread; } closesocket( m_Sock) ; CDialog::OnCancel();}

該實例只是功能部分主要代碼,讀者可根據自身項目需求進行測試,加以改進與完善之后整合進自身項目中去。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 色综合av | 性培育学校羞耻椅子调教h 另类中文字幕 | 国产一区二区欧美 | 天天摸天天操 | 四虎影片 | 国产精品久久久久久久午夜 | 日韩视频在线观看一区 | 久久在线 | 免费的黄色网 | 亚洲精品在线免费播放 | 91亚洲国产成人精品性色 | 99在线视频观看 | 欧美大片在线观看 | 一区免费观看 | 国产免费成人在线视频 | 亚洲成人二区 | 日本成人黄色 | 狠狠伊人 | 另类免费视频 | 欧美激情在线精品一区二区三区 | 精品三级在线观看 | 一级看片 | 欧美日韩一区二区三区视频 | 欧美精品 在线观看 | 91精品久久久久久久久中文字幕 | 精品无人乱码一区二区三区 | 国产精品一区欧美 | 激情综合在线 | 国产精品久久久久久久 | 成人在线免费视频 | 久久久久中文 | 日韩精品久久久免费观看夜色 | 国产日韩一区二区 | 综合91| 中文字幕二区 | av黄色一级片 | 欧美在线网站 | 黄色污网站 | 日韩高清成人 | 色吊丝在线永久观看最新版本 | 国产高清在线精品一区二区三区 |