int GetMyIPAddress(char** list, const int maxstrlen, const int listsize)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
char name[256];
LPHOSTENT lpHostEntry;
struct in_addr *pinAddr;
if (gethostname(name,255) == SOCKET_ERROR){
return -1;
}
if ((lpHostEntry = gethostbyname(name)) == NULL){
return -2;
}
bool isBreak = false;
int i = 0;
for (;i<listsize;i++){
if ((pinAddr = ((LPIN_ADDR)lpHostEntry->h_addr_list[i])) == NULL){
isBreak = true;
break;
}
strncpy_s((char*)list+(i*maxstrlen),maxstrlen, inet_ntoa(*pinAddr), _TRUNCATE);
}
if( isBreak ){
//Success.
return i;
}
else{
//Too Short list.( too many myaddress )
return -3;
}
return i;
}
本文介绍了一个C/C++函数,该函数用于获取并返回本地计算机的所有IP地址。通过使用socket编程中的gethostname和gethostbyname函数,可以实现这一功能。

被折叠的 条评论
为什么被折叠?



