我试图获取我的服务器的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
你是对的!谢谢! – netfreak 2013-03-25 03:36:45