我试图获取服务器的IP地址,但它获得127.0.1.1而不是127.0.0.1。错误在哪里?另外,我如何获得真实的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 );
}
user @ user-desktop:〜/ Desktop / My Code $ ./ipprint hostname是用户桌面 规范主机名是IP 127.0.1.1的用户桌面 127.0.1.1
答案 0 :(得分:3)
这就是你的/etc/hosts
所表明的。它很可能有类似的东西:
127.0.0.1 localhost
127.0.1.1 user-desktop
答案 1 :(得分:0)
它在/etc/hosts
。这是一个默认条目,gethostbyname()
也在那里。