• 梦在远方1
    了解作者
  • Visual C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 3
    下载次数
  • 2013-11-04 16:48
    上传日期
VC实现ping命令,方便电脑间的监管。
ping.rar
  • ping.cpp
    3.7KB
内容介绍
vc++ 实现ping命令功能 [cpp] <pre name="code" class="cpp"> // 参数: // szTarget目标地址(可以是域名、IP地址) // dwTime返回时间;如果是超时,等于INFINITE BOOL Ping(LPCTSTR szTarget, DWORD &dwTime) { BOOL bSuccess = FALSE; dwTime = INFINITE; if(szTarget == NULL) { TRACE0("Target Is NULL\n"); return FALSE; } TCHAR szCmdLine[80]; if(_sntprintf(szCmdLine, sizeof(szCmdLine) / sizeof(TCHAR), _T("ping.exe -n 1 %s"), szTarget) == sizeof(szCmdLine) / sizeof(TCHAR)) { TRACE0("Target Is Too Long\n"); return FALSE; } HANDLE hWritePipe = NULL; HANDLE hReadPipe = NULL; HANDLE hWriteShell = NULL; HANDLE hReadShell = NULL; SECURITY_ATTRIBUTES sa; memset(&sa, 0, sizeof(sa)); sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; if(CreatePipe(&hReadPipe, &hReadShell, &sa, 0) && CreatePipe(&hWriteShell, &hWritePipe, &sa, 0)) { STARTUPINFO si; memset(&si, 0, sizeof(si)); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES; si.hStdInput = hWriteShell; si.hStdOutput = hReadShell; si.hStdError = hReadShell; si.wShowWindow = SW_HIDE; PROCESS_INFORMATION pi; memset(&pi, 0, sizeof(pi)); int nMin = -1, nMax = -1, nAvg = -1; if(CreateProcess(NULL, szCmdLine, NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) { if(WaitForSingleObject(pi.hProcess, 10000) == WAIT_OBJECT_0) { TCHAR szBuffer[1024]; DWORD dwBytes; if(ReadFile(hReadPipe, szBuffer, sizeof(szBuffer), &dwBytes, NULL)) { szBuffer[dwBytes] = '\0'; LPTSTR lpszTime = NULL; lpszTime = _tcsstr(szBuffer, _T("Request timed out")); if(lpszTime == NULL) { lpszTime = _tcsstr(szBuffer, _T("Minimum")); if(lpszTime != NULL) { if(_stscanf(lpszTime, _T("Minimum = %dms, Maximum = %dms, Average = %dms"), &nMin, &nMax, &nAvg) == 3) { TRACE3("%d, %d, %d\n", nMin, nMax, nAvg); dwTime = nAvg; bSuccess = TRUE; } } else { TRACE0("PING FORMAT is Error\n"); } } else { TRACE0("PING is Time Out\n"); bSuccess = TRUE; } } } else { TRACE1("Process(%d) is Time Out\n", pi.dwProcessId); TerminateProcess(pi.hProcess, 0); } CloseHandle(pi.hThread); CloseHandle(pi.hProcess); TRACE3(_T("Minimum = %dms, Maximum = %dms, Average = %dms\n"), nMin, nMax, nAvg); } } if(hWritePipe != NULL) CloseHandle(hWritePipe); if(hReadPipe != NULL) CloseHandle(hReadPipe); if(hWriteShell != NULL) CloseHandle(hWriteShell); if(hReadShell != NULL) CloseHandle(hReadShell); return bSuccess; }
评论
    相关推荐
    • vc ping类及应用
      vc6.0环境下编写的ping类,MFC应用程序支持对指定Ip地址进行ping操作。 本程序原为一个简单的一个网络测试程序。
    • C语言实现ping
      c语言实现ping程序,平台:windows xp,VC 6.0,适合初学者
    • Ping程序C语言实现
      Ping程序的C语言实现。代码很精简,易读。只有获取时间的函数使用了Windows API(为了实现高精度计时),其他都是跨平台代码。 注:VC编译请自行添加winsock2.h,以及ws2_32.lib。Linux下编译需要修改获取时间的函数...
    • 局域网ping工具(VC2015)
      一个局域网ping工具,VC2015 MFC开发,可对局域网IP地址进行管理,使用sqlite3保存数据。单线程ping多个IP地址,结果数据可导入导出。因为win7下原始套接字需管理员权限,所以直接使用ping.exer执行结果输出分析。
    • VC实现的简单的Ping 程序
      根据ICMP协议原理,使用C++语言实现的简单的Ping程序
    • VC实现PING操作,很好很强大
      该程序用VC++6.0编制,实现ping 操作
    • PING VC6.0程序设计
      在WINDOWS环境下实现PING程序; 3) 程序要求 在命令提示符下输入: PING ΧΧΧ.ΧΧΧ.ΧΧΧ.ΧΧΧ 其中ΧΧΧ为目的主机的IP地址,不要求支持域名,对是否带有开关变量也不做要求。不带开关变量时,要求返回4次...
    • Vc Ping 源代码
      VC++ 源代码,采用 Icmp Ping 源代码
    • VC++.NET实现连续的Ping程序
      摘要:VC/C++源码,网络相关,Ping 连续的Ping程序源码,基于Vc++.NET实现,输入指定的IP地址,输入重试次数,点击“开始Ping”即可实现连续的Ping功能。
    • VC/MFC PING ICMP
      本程序对使用原始套接字实现ping命令,对ICMP协议的一些讲解,适合对网络编程有兴趣的人,可以作为参考,也感谢各位提出建议和补充不足