Skip to main content

Windows Mobile / WinCE Custom Ping function

I am back and yet again Windows Mobile / WinCE tutorial but this time soemthing interesting and on networking side. Lately i was developing Wireless PDA Update application which requires me to check if server which contains ROM image files is reachble before attempting to download files from the same. I thought that there is a WinCE API available to perform this task but to my surprise there is NO direct API however helper API is available. Then i have constructed an API which takes parameters and returns true if ping successful.

Here is the function .... If you require full application do let me know so that i can upload to any free server.

int Ping(PWCHAR wszHostname, int iWaitTime) {

WCHAR wszAdd[MAX_PATH] = L"\0";
in_addr addr;
HANDLE hFile;
IP_OPTION_INFORMATION ipInfo ;
IPAddr ipAddress ;
ICMP_ECHO_REPLY icmpEcho;
int iRet = -1;
char* pMBHost = (char*) malloc(MAX_PATH);
char* pMBAddr;

wcstombs(pMBHost, wszHostname, MAX_PATH ); // Convert Unicode to Multibyte

hostent* phe = gethostbyname(pMBHost);

if(phe) {
ipAddress = *(DWORD*)(phe->h_addr_list[0]);
}

if(ipAddress != INADDR_NONE) {
memcpy(&addr, phe->h_addr_list[0], sizeof(in_addr) );
pMBAddr = inet_ntoa(addr);
mbstowcs(wszAdd, pMBAddr, sizeof(CHAR)*strlen(pMBAddr));
// AfxMessageBox(wszAdd);

iRet = 0;

hFile = IcmpCreateFile();
// Set some reasonable default values
ipInfo.Ttl = 128 ;
ipInfo.Tos = 0;
ipInfo.Flags = 0;
ipInfo.OptionsSize = 0 ;
ipInfo.OptionsData = NULL ;

icmpEcho.Status = 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 ;
}
}

free(pMBHost);

return iRet;
}

Comments

Popular posts from this blog

What is the Current Directory in Windows CE & Windows Mobile ?

Lately i encountered  a situation where i had to find the current directory from where my application is running and all my config files reside. Question is "How do I find the current directory?" on Windows CE/Mobile devices. Desktop / PC it is just piece of cake but Windows CE / Mobile devices don't have a concept of a current directory.  Which means all pats are absolute and there is no concept called relative path. Due to lack of relative paths most of the files are loaded to the "Windows" directory and that is how Windows directory is crowded. Alternatively you can hard code directory path and insist user to load files always there. But i hate to hard code values or copy files to Windows directory.  So this has triggered to find a solution to identify my current directory. Since there is no concept of a current directory on a Windows CE / Windows Mobile device how would one locate a resource for which only a relative path is known?  That is what following c...

My IQ Score

IQ Test

Android Bluedroid debugging

Android Bluedroid Debugging  i.e New BT Stack from Android Community: Wow ... its been more than 2 years i updated my blog ... Am i too lazy or too busy or combination of both. Combination of both -:).  Anyways today i see a need to update my blog with some important info regarding Bluedroid debugging. Bluedroid is the latest and greatest Bluetooth stack from Android developed by Google & Broadcom jointly. So obviously Google does not have interest or resources to maintain two stacks hence they are going to drop famous BlueZ stack for good reasons.  BlueZ stack comes with lot of good tools like hcidump for debugging and i see all those tools no more work starting with Android JB MR2 a.k.a 4.3 which has Bluedroid integrated full-fledged.  So Bluedroid got to have new tools or some tools to debug but as usual Google is very poor at documenting the things and they leave finding puzzles to developers out there. SO today's quest is fining the debugging tools ...