MFC实现的ping功能.docxVIP

  • 54
  • 0
  • 约9.86千字
  • 约 12页
  • 2016-11-27 发布于河南
  • 举报
MFC实现的ping功能

/xuesongshu/archive/2013/02/22/2921481.html方法:如何解决用MFC实现的ping功能中把目标主机不可到达的当成ping通的问题转载请注明来源:/xuesongshu//xuesongshu/ 网上查到的资料能实现ping功能,但是都有一个问题,它只检测是否存在错误,而不检测ICMP数据包是哪个机器回复的,这样造成一种错误的情况:当PC与路由器连通时,如果路由器回复该主机不可达,那么程序一样回应PING通了。目前网络上搜索不到相关正确的资料,我把我的方法分享给网友们。运行截图:本段程序代码是我做的一个软件的其中的一个功能。该方法是一个线程的主体。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102UINT?DoPingHost(LPVOID?lParam){?WSADATA wdPing;?SOCKET skPing;?DWORD?dwIpDest;?LARGE_INTEGER liBegin,liEnd,liClockFrequency;?double?dSpan=0;?struct?sockaddr_in destAddr,fromAddr;?int?nTimeOut=3000,nPingCount=4,nBread=0,nFromLen=sizeof(fromAddr),nPingPort=0,nPingFailCount=0,nSliderPos=0;?char* cIcmpData=new?char[10];?char?cLoalName[100],cRecvBuffer[100];?IcmpHeader* icmpData=(IcmpHeader*)cIcmpData;?CLanCopyDlg* cd=(CLanCopyDlg*)lParam;?CString szMsg,szTmp;?BOOL?bCanBrowse=FALSE;?::QueryPerformanceFrequency(liClockFrequency);?memset(cIcmpData,0,sizeof(IcmpHeader));?cd-GetDlgItem(IDC_BUTTON_MACHINE)-EnableWindow(FALSE);?cd-GetDlgItem(IDC_BUTTON_MACHINE)-SetWindowText(请稍等);?if?(::WSAStartup(MAKEWORD(2,1),wdPing))?{?::MessageBox(cd-m_hWnd,TEXT(网络初化异常,Socket创建失败!),异常,MB_OK|MB_ICONERROR);?return?0;?}?skPing=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);?setsockopt(skPing,SOL_SOCKET,SO_RCVTIMEO,(char*)nTimeOut,sizeof(nTimeOut));?((CIPAddressCtrl*)(cd-GetDlgItem(IDC_IPADDRESS_DEST)))-GetAddress(dwIpDest);?dwIpDest=MAKEIPADDRESS(FOURTH_IPADDRESS(dwIpDest),THIRD_IPADDRESS(dwIpDest),SECOND_IPADDRESS(dwIpDest),FIRST_IPADDRESS(dwIpDest));?destAddr.sin_addr.S_un.S_addr=dwIpDest;?destAddr.sin_family=AF_INET;?srand(time(NULL));?nPingPort=rand()%1024+1024;?destAddr.sin_port=nPingPort;?icmpData-i_type=8;?icmpData-i_code=0;?icmpData-i_id=(u_short)::GetCurrentProcessId();?icmpData-i_seq=0;?gethostname(cLoalName,100);?nSliderPos=0;?cd-m_sliderCopyFile.SetPos(nSliderPos);?for?(int?i=0;inPingCount;i++)?{?::QueryP

文档评论(0)

1亿VIP精品文档

相关文档