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();