VC 获取本机名字和IP地址
void GetHostAddr( OUT char *ipAddr, OUT char *hostName )
{
char hostname[100];
int res = gethostname(hostname, sizeof(hostname));
if(res != 0) return ;
memcpy(hostName, hostname, 100);
hostent* pHostent = gethostbyname(hostname);
if (pHostent==NULL) return ;
hostent& he = *pHostent;
sockaddr_in sa; // 可以直接用 in_addr addr;
// addr.s_addr = *((unsigned long*)pHostent->h_addr_list[0]);
// CString ip = inet_ntoa(addr.s_addr); //返回的是 char * 类型
memcpy(&sa.sin_addr.s_addr, pHostent->h_addr_list[0], pHostent->h_length);
strcpy(ipAddr, inet_ntoa(sa.sin_addr));
// ipAddr = inet_ntoa(sa.sin_addr);
}
使用:
#include <winsock.h>
WORD wVersionRequested = MAKEWORD(1, 1);
WSADATA wsaData;
if (WSAStartup(wVersionRequested, &wsaData))
return 0;
char ip[100], name[100];
GetHostAddr(ip, name); 即可获取ip和name
WSACleanup();