2013-03-24 129 views
-2

我试图获取我的服务器的IP地址,但它获取127.0.1.1而不是127.0.0.1。错误在哪里?另外我怎么能得到真正的IP地址,而不是本地主机地址。获取IP地址功能不正常

#define MAXHOSTNAME 256 
#define DEBUG 


    char * getIPAddress() 
    { 
     char myname[ MAXHOSTNAME + 1 ]; 
     static char IPinASCII[ MAXHOSTNAME ]; /* Oversized */ 
     struct hostent * hp; 

     memset(myname, 0, MAXHOSTNAME + 1); /* Init */ 
     memset(IPinASCII, 0, MAXHOSTNAME); 

     gethostname(myname, MAXHOSTNAME); 
    #ifdef DEBUG 
     printf("hostname is %s\n", myname); 
    #endif /* DEBUG */ 

     hp = gethostbyname(myname); 
     if(hp == NULL) 
     { 
      perror("gethostbyname"); 
      return("IP not found"); 
     } 

     inet_ntop(hp->h_addrtype, hp->h_addr_list[ 0 ], IPinASCII, 
      MAXHOSTNAME) ; 

    #ifdef DEBUG 
     printf("canonical hostname is %s at IP %s\n", hp->h_name, IPinASCII); 
    #endif /* DEBUG */ 

     return(IPinASCII); 
    } 

用户@用户的桌面:〜/桌面/我的代码$ ./ipprint hostname是用户的桌面 正规主机名是用户在桌面IP 127.0.1.1 127.0.1.1

回答

3

这就是您的/etc/hosts表示的内容。它最可能是这样的:

127.0.0.1  localhost 
127.0.1.1  user-desktop 
+0

你是对的!谢谢! – netfreak 2013-03-25 03:36:45

0

这是在/etc/hosts。这是一个默认条目,并且gethostbyname()也看起来那里。