MFC 编写 Ping
上一篇 /
下一篇 2009-08-11 18:39:08
#include "stdafx.h"
#include "Dialog.h"
#include "DialogDlg.h"
#include <winsock2.h>
#pragma comment(lib,"Ws2_32.lib")
#include <iphlpapi.h>
#include <icmpapi.h>
#pragma comment(lib,"Iphlpapi.lib")
//发动ping命令按钮事件
void CDialogDlg::OnBnClickedLink()
{
// TODO: 在此添加控件通知处理程序代码
HANDLE hIcmpFile;
unsigned long ipaddr = INADDR_NONE;
DWORD dwRetVal = 0;
char SendData[] = "Data Buffer";
LPVOID ReplyBuffer = NULL;
DWORD ReplySize = 0;
PICMP_ECHO_REPLY reply;
if(handle==INVALID_HANDLE_VALUE)
MessageBox(_T("LoadLibrary ERROR"));
//你要ping 的IP
ipaddr = inet_addr("192.168.1.118");
ReplySize=sizeof(ICMP_ECHO_REPLY)+sizeof(SendData);
ReplyBuffer=(void*)malloc(ReplySize);
hIcmpFile=IcmpCreateFile();
if (hIcmpFile == INVALID_HANDLE_VALUE)
MessageBox(_T("file created failed"));
dwRetVal = IcmpSendEcho(hIcmpFile, ipaddr, SendData, sizeof(SendData),
NULL, ReplyBuffer, ReplySize, 1000);
if(dwRetVal!=0)
{
reply=(PICMP_ECHO_REPLY)ReplyBuffer;
struct in_addr ReplyAddr;
ReplyAddr.S_un.S_addr=reply->Address;
CString str=_T("received from ");
char *p=inet_ntoa(ReplyAddr);
str.Format(_T("%s%S"),str,p);
MessageBox(str);
}
else
{
MessageBox(_T("IcmpSendEcho failed"));
}
IcmpCloseHandle(hIcmpFile);
free(ReplyBuffer);
}
收藏
举报
TAG:
MFC
Ping
编写