int CPhoneDlg::GetLocalIP(unsigned long *ip, int len)
{
char chName[128];
gethostname(chName,sizeof(chName));
struct hostent* pHost;
pHost = gethostbyname(chName);
CString str;
int i=0;
for(i=0; pHost!=NULL && pHost->h_addr_list[i]!=NULL; i++ ){
int j;
for(j = 0;j<pHost->h_length;j++ ){
CString addr;
if( j > 0 )
str += ".";
addr.Format("%u", (unsigned int)((unsigned char*)pHost->h_addr_list[i])[j]);
str += addr;
}
if(i>len)
return 0;
ip[i]=inet_addr(str);
str.Empty();
}
return i;
}
void CPhoneDlg::OnLocalIp()
{
unsigned long ip[2];
int i=GetLocalIP(ip,2);
char* str=(char*)malloc(64);
in_addr t;
t.S_un.S_addr=ip[0];
if(i!=0)
str=inet_ntoa(t);
MessageBox(str);
free(str);
}