如何用简单的方法得到当前机器的ip地址、如何实现域名与ip地址的双向解析?

如何用简单的方法得到当前机器的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, &amp;wsaData))   
20{   
21MessageBox(NULL, "Could not load Windows Sockets DLL.", PROG_NAME,   
22MB_OK &amp;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 &amp;brvbarMB_ICONSTOP);   
30else //Convert the IP Address into a dotted-decimal string   
31{   
32szIPAddr = inet_ntoa(*(LPIN_ADDR)*(lpHostEnt-&gt;h_addr_list));   
33MessageBox(NULL, szIPAddr, lpHostEnt-&gt;h_name, MB_OK &amp;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 &amp;brvbarMB_ICONSTOP);   
42else //Resolve the IP Address   
43{   
44lpHostEnt = gethostbyaddr((LPSTR)&amp;dwIPAddr, PF_INET_LENGTH, PF_INET);   
45if(!lpHostEnt)   
46MessageBox(NULL, "Could not get host name!", HOST_ADDR,   
47MB_OK &amp;brvbarMB_ICONSTOP);   
48else   
49MessageBox(NULL, lpHostEnt-&gt;h_name, HOST_ADDR, MB_OK &amp;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, &amp;wsaData ) == 0 )   
68{   
69  
70if( gethostname ( name, sizeof(name)) == 0)   
71{   
72if((hostinfo = gethostbyname(name)) != NULL)   
73{   
74ip = inet_ntoa (*(struct in_addr *)*hostinfo-&gt;h_addr_list);   
75}   
76}   
77  
78WSACleanup( );   
79}</winsock2.h>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus