【问题标题】:Get Ip address function not working well获取IP地址功能不正常
【发布时间】:2013-03-24 21:08:00
【问题描述】:

我正在尝试获取我的服务器的 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 主机名是用户桌面 规范主机名是 IP 127.0.1.1 的用户桌面 127.0.1.1

【问题讨论】:

    标签: c sockets ip


    【解决方案1】:

    这就是您的/etc/hosts 所表示的。它很可能是这样的:

    127.0.0.1       localhost
    127.0.1.1       user-desktop
    

    【讨论】:

      【解决方案2】:

      它位于/etc/hosts。这是一个默认条目,gethostbyname() 也在那里。

      【讨论】:

        猜你喜欢
        • 2011-10-06
        • 2023-03-19
        • 2010-11-04
        • 2011-12-22
        • 1970-01-01
        • 2018-05-06
        • 2018-06-10
        • 1970-01-01
        相关资源
        最近更新 更多