サーバーのIPアドレスを取得しようとしていますが、127.0.0.1ではなく127.0.1.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 is user-desktop canonical hostname is user-desktop at IP 127.0.1.1 127.0.1.1