如何用简单的方法得到当前机器的ip地址、机器名、域名等等信息?
---------------------------------------------------------------
#include
1<winsock2.h>
2
3#define PROG_NAME "DNS Lookup"
4#define HOST_NAME "www.netease.com"
5
6#define WINSOCK_VERSION 0x0101
7#define PF_INET_LENGTH 4
8
9#define HOST_ADDR "192.169.0.7"
10
11int PASCAL WinMain(HINSTANCE hInstance, HINSTANCE HPrevInstance,
12LPSTR lpszCmdParam, int nCmdShow)
13{
14WSADATA wsaData; //Winsock implementation details
15LPHOSTENT lpHostEnt; //Internet host information structure
16DWORD dwIPAddr; //IP address as an unsigned long
17LPSTR szIPAddr; //IP address as a dotted decimal string
18
19if(WSAStartup(WINSOCK_VERSION, &wsaData))
20{
21MessageBox(NULL, "Could not load Windows Sockets DLL.", PROG_NAME,
22MB_OK &brvbarMB_ICONSTOP);
23}
24else //Resolve the host name
25{
26lpHostEnt = gethostbyname(HOST_NAME);
27if(!lpHostEnt)
28MessageBox(NULL, "Could not get IP Address!", HOST_NAME,
29MB_OK &brvbarMB_ICONSTOP);
30else //Convert the IP Address into a dotted-decimal string
31{
32szIPAddr = inet_ntoa(*(LPIN_ADDR)*(lpHostEnt->h_addr_list));
33MessageBox(NULL, szIPAddr, lpHostEnt->h_name, MB_OK &brvbarMB_ICONINFORMATION);
34}
35
36//Convert a dotted-decimal string into a 32-bit IP address
37dwIPAddr = inet_addr(HOST_ADDR);
38
39if(dwIPAddr == INADDR_NONE)
40MessageBox(NULL, "Invalid Internet address!", HOST_ADDR,
41MB_OK &brvbarMB_ICONSTOP);
42else //Resolve the IP Address
43{
44lpHostEnt = gethostbyaddr((LPSTR)&dwIPAddr, PF_INET_LENGTH, PF_INET);
45if(!lpHostEnt)
46MessageBox(NULL, "Could not get host name!", HOST_ADDR,
47MB_OK &brvbarMB_ICONSTOP);
48else
49MessageBox(NULL, lpHostEnt->h_name, HOST_ADDR, MB_OK &brvbarMB_ICONINFORMATION);
50}
51}
52
53WSACleanup();
54
55\---------------------------------------------------------------
56
57char* Getip()
58{
59WORD wVersionRequested;
60WSADATA wsaData;
61char name[255];
62char *ip;
63ZeroMemory(name, sizeof(name));
64PHOSTENT hostinfo;
65wVersionRequested = MAKEWORD( 2, 0 );
66
67if ( WSAStartup( wVersionRequested, &wsaData ) == 0 )
68{
69
70if( gethostname ( name, sizeof(name)) == 0)
71{
72if((hostinfo = gethostbyname(name)) != NULL)
73{
74ip = inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list);
75}
76}
77
78WSACleanup( );
79}</winsock2.h>