QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1396|回复: 5

求助关于获取本机ip的问题

[复制链接]
发表于 2005-8-15 11:23:14 | 显示全部楼层 |阅读模式
本人需要获取本机ip地址,但通过程序段
InetAddress addr = InetAddress.getLocalHost();
localhostip = addr.getHostAddress().toString();
得到的ip是127.0.0.1,是回环地址,并非真实ip地址

然后本人尝试通过程序段
String eth = "eth0";
NetworkInterface face = NetworkInterface.getByName(eth);
Enumeration ethip = face.getInetAddresses();
来获取ip地址,其得到的字符串确是 fe80:0:0:0:230:48ff:fe22:3746

实在不解,希望大家多多指教,怎样才能获取到ip地址.谢谢!
发表于 2005-8-15 11:37:11 | 显示全部楼层
在论坛里搜索,以前发过。
回复

使用道具 举报

发表于 2005-8-16 15:52:51 | 显示全部楼层
InetAddress addr = InetAddress.getLocalHost();
localhostip = addr.getHostAddress().toString();

这个代码是可以得到正确的IP的,如果设置了局域网的IP,那么得到的就是局域网的IP,如果局域网的IP设置为自动获取,那么得到的就是其他的IP,比如ADSL的IP.如果什么都没有设置的话,就是127.0.0.1.
我刚刚试过了.
回复

使用道具 举报

发表于 2005-8-16 17:54:50 | 显示全部楼层
在你的机器上是这样,其它的不一定。
ioctl才是根本。
回复

使用道具 举报

发表于 2005-8-17 15:03:27 | 显示全部楼层
我也搞了这个问题半天 结果放弃了 愿闻其祥
我的问题是拨号上网或者别的手段 反正有了内网地址和外网地址的时候 怎么分别得到这两个地址呢?
回复

使用道具 举报

发表于 2005-8-18 09:05:18 | 显示全部楼层
拨号的设备是ppp0吧,换一下设备名就应该可以了。
[code:1]
#include <stdio.h>
#include <arpa/inet.h>
#include <sys/ioctl.h>
#include <net/if.h>
main()
{
        int     fd_arp;
        struct  ifreq   ifr;
        char device[32];
        struct sockaddr_in *sin_ptr;
        int i,ret,p[4];

        strcpy(device, "eth0");
        fd_arp = socket(AF_INET, SOCK_PACKET, htons(0x0806));
        strcpy(ifr.ifr_name, device);

        if(fd_arp>=0)
        {
                ret=ioctl(fd_arp, SIOCGIFADDR, &ifr);
                if(ret>=0)
                {
                        sin_ptr = (struct sockaddr_in *)&ifr.ifr_addr;
                        for(i=0;i<4;i++)
                        {
                                p[i]=((sin_ptr->sin_addr.s_addr)>>(i*8))&0xff;
                        }
                        printf("Your IP is: %d.%d.%d.%d\n",p[0],p[1],p[2],p[3]);
                }
        }
}
[/code:1]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-5 13:41 , Processed in 0.049181 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表