Okay,
I got ICMP to work. But heres the problem.
It doesnt work
I use the "GetLastError()" function, and I get error # 122, which i looked up
I think its 'bad address'
I checked my IP checking function, and i printed out what it returns. It looks fine.
now i think technically, if you enter the "1656371873" address into your browser, it'll bring you to VBWorld. It doesn'tQuote:
My IP checking function is below that, and below that is the ICMP stuff.
Yahoo! comes out as a negative number.
Thanks guys
-nabeel
PHP Code:u_long WSOCK::checkIP(char *IP){
u_long iaIP;
iaIP=inet_addr(IP);
if (iaIP==INADDR_NONE) {
// iaIP=0;
HOSTENT* hst=NULL;
hst = gethostbyname(IP);
struct in_addr ia;
//attempt to resolve the hostname
hst = gethostbyname(IP);
//check for valid hostname
if(hst == NULL){
printf("An invalid hostname was entered, or hostname not found\n");
return -1;
}
char *ipAdd = new char[15];
// Format it into a string
for(int i=0;hst->h_addr_list[i];i++){
memcpy(&ia.s_addr,hst->h_addr_list[i],sizeof(ia.s_addr));
ipAdd=(char *) inet_ntoa(ia);
}
printf ("Hostname %s resolved to %s\n",IP,ipAdd);
iaIP = inet_addr(ipAdd);
//check whether its also a null ip
if(iaIP == INADDR_NONE){
printf("Hostname/IP not found\n");
return -1;
}
}
return iaIP;
}
PHP Code:if(!ini)
return -2; //return -2 for no wsock initialization
//check the IP Address
u_long ipaddress;
if((ipaddress= WSOCK::checkIP(IPorHost)) == -1){
printf("IP Address Error\n");
return -1;
}
printf("%d\n",ipaddress);
char tmp[32];
for (int i=0;i<32;i++)
tmp[i]=' ';
HANDLE hFile;
hFile = IcmpCreateFile();
//finish it up
ip_option_information *optinfo= new ip_option_information;
icmp_echo_reply *echo = new icmp_echo_reply;
optinfo->Ttl = ttl; //set time to live
int retval=-1;
if((IcmpSendEcho(hFile,(IPAddr)ipaddress,tmp,strlen(tmp),optinfo,echo,sizeof(echo)+8,2000)))
retval = echo->RoundTripTime;
else
retval = -1;
IcmpCloseHandle(hFile);
return retval;
