WinCE 下实现 ping 功能
来源:互联网 发布:国内数据脱敏技术 编辑:程序博客网 时间:2024/05/29 04:56
需要包括的头文件与库文件:
#include "Winsock2.h"// PING#include "Ipexport.h"#include "Icmpapi.h"#include "winsock.h"extern HWND ghMainWnd;#pragma comment (lib, "Iphlpapi.lib") #pragma comment (lib, "Ws2.lib")
源代码如下:
int Ping(TCHAR *Address , int iTtl , int iWaitTime , TCHAR *szName , int *prtt){IPAddr ipAddress ;IP_OPTION_INFORMATION ipInfo ;ICMP_ECHO_REPLY icmpEcho;HANDLE hFile;char strHost [ MAX_PATH ] ;TCHAR szPCName [ MAX_PATH ] = { TEXT( "" ) } ;int iRet = -1 ;struct in_addr iaDest;// Internet address structureLPHOSTENT pHost;// Pointer to host entry structureRETAILMSG(1,(L"TICK: %d - [TCP Client]Enter Ping......\r\n",GetTickCount() / 1000));_tcscpy( szName , TEXT("") );WideCharToMultiByte( CP_ACP, 0, Address , -1, strHost, sizeof( strHost ), NULL, FALSE );ipAddress = inet_addr(strHost);iaDest.s_addr = inet_addr(strHost);if (iaDest.s_addr == INADDR_NONE){pHost = gethostbyname(strHost);if( pHost ){char *pIP ;iaDest.S_un.S_addr = *(DWORD *)(*pHost->h_addr_list) ;pIP = inet_ntoa( iaDest ) ;if( strlen( pIP ) )MultiByteToWideChar( CP_ACP, 0, pIP , -1, szPCName, sizeof( szPCName ) );if( _tcslen( szPCName ) )_tcscpy( szName , szPCName );}}else{pHost = gethostbyaddr((const char *)&iaDest, sizeof(struct in_addr), AF_INET);if( pHost ){MultiByteToWideChar( CP_ACP, 0, pHost->h_name , -1, szPCName, sizeof( szPCName ) );if( _tcslen( szPCName ) )_tcscpy( szName , szPCName );}}if( pHost )ipAddress = *(DWORD *)(*pHost->h_addr_list) ;if (ipAddress != INADDR_NONE){iRet = 0 ;hFile = IcmpCreateFile();// Set some reasonable default valuesipInfo.Ttl = iTtl ;ipInfo.Tos = 0;ipInfo.Flags = 0;ipInfo.OptionsSize = 0 ;ipInfo.OptionsData = NULL ;icmpEcho.Status = IP_REQ_TIMED_OUT/*IP_SUCCESS*/ ;IcmpSendEcho( hFile , ipAddress , NULL , 0 ,(PIP_OPTION_INFORMATION)&ipInfo,&icmpEcho , sizeof(ICMP_ECHO_REPLY) , iWaitTime ) ;IcmpCloseHandle(hFile) ;if ( icmpEcho.Status == IP_SUCCESS )iRet = 1 ;*prtt = icmpEcho.RoundTripTime ;}return iRet ;}
static LPTSTR strIpAddr[] = {L"202.96.209.5",// 上海 DNSL"220.181.6.18",// 百度L"202.100.4.15",// 西安 DNS};
TCHAR tcName[MAX_PATH] = {0};int iPtt = 0;
int iPingRet = Ping(strIpAddr[giPingIndex],128,3000,tcName,&iPtt);//ping tmc serverif(iPingRet == 1){RETAILMSG(1, (TEXT("TICK: %d - Ping IP: %s Success.\r\n"),GetTickCount() / 1000, strIpAddr[giPingIndex]));}else
{
// 失败
}
0 0
- WinCE 下实现 ping 功能
- C#下实现ping功能
- C#下实现ping功能
- C#下实现ping功能
- C实现Windows下的ping功能
- java在linux下ping功能实现
- ucos下lwip的ping功能实现
- wince下实现FTP的功能
- WinCE下USB串口功能实现
- java 实现ping功能
- c#实现ping功能
- Java 实现Ping功能
- java实现ping功能
- Java 实现Ping功能
- java实现ping功能
- Java 实现Ping 功能
- Android实现ping功能
- socket实现ping功能
- Linux写时拷贝技术(copy-on-write)
- Colorbox - a jQuery lightbox
- Android 游戏教程:让人物动起来
- java 之ArrayList实现
- 某公司面试测试题
- WinCE 下实现 ping 功能
- className.class.getResourceAsStream()与ClassLoader.getSystemResourceAsStream() 的区别
- <Win32_2>Bitmap位图应用1 ------ Win32的数字时钟
- hadoop机架感知
- 第六届中国云计算大会
- linux socket学习(二)
- POJ2663
- Cycript segmentation fault:11 错误 解决
- 说说Android 两种为自定义组件添加属性的使用方法和区别