MFC实现的ping功能

MFC实现的ping功能

ID:37711669

大小:72.21 KB

页数:12页

时间:2019-05-29

MFC实现的ping功能_第1页
MFC实现的ping功能_第2页
MFC实现的ping功能_第3页
MFC实现的ping功能_第4页
MFC实现的ping功能_第5页
资源描述:

《MFC实现的ping功能》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、方法:如何解决用MFC实现的ping功能中把目标主机不可到达的当成ping通的问题转载请注明来源:http://www.cnblogs.com/xuesongshu/  网上查到的资料能实现ping功能,但是都有一个问题,它只检测是否存在错误,而不检测ICMP数据包是哪个机器回复的,这样造成一种错误的情况:当PC与路由器连通时,如果路由器回复该主机不可达,那么程序一样回应PING通了。目前网络上搜索不到相关正确的资料,我把我的方法分享给网友们。运行截图:本段程序代码是我做的一个软件的其中的一个功能

2、。该方法是一个线程的主体。1234567891UINT DoPingHost(LPVOID lParam){    WSADATAwdPing;    SOCKETskPing;    DWORD dwIpDest;    LARGE_INTEGERliBegin,liEnd,liClockFrequency;    double dSpan=0;    struct sockaddr_indestAddr,fromAddr;    int nTimeOut=3000,nPingCount=4,n

3、Bread=0,nFromLen=sizeof(fromAddr),nPingPort=0,nPingFailCount=0,nSliderPos=0;01112131415161718192021222324252627282930313    char*cIcmpData=new char[10];    char cLoalName[100],cRecvBuffer[100];    IcmpHeader*icmpData=(IcmpHeader*)cIcmpData;    CLanCop

4、yDlg*cd=(CLanCopyDlg*)lParam;    CStringszMsg,szTmp;    BOOL bCanBrowse=FALSE;    ::QueryPerformanceFrequency(&liClockFrequency);    memset(cIcmpData,0,sizeof(IcmpHeader));    cd->GetDlgItem(IDC_BUTTON_MACHINE)->EnableWindow(FALSE);    cd->GetDlgItem(

5、IDC_BUTTON_MACHINE)->SetWindowText("请稍等");    if (::WSAStartup(MAKEWORD(2,1),&wdPing))    {        ::MessageBox(cd->m_hWnd,TEXT("网络初化异常,Socket创建失败!"),"异常",MB_OK

6、MB_ICONERROR);        return 0;    }    skPing=socket(AF_INET,SOCK_RAW,IPPROTO_ICMP);    s

7、etsockopt(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_IPADDRE

8、SS(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;    i

9、cmpData->i_id=(u_short)::GetCurrentProcessId();    icmpData->i_seq=0;    gethostname(cLoalName,100);    nSliderPos=0;    cd->m_sliderCopyFile.SetPos(nSliderPos);    for (int i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。