JAVA获取IP地址不成功,用的java.net.InetAddress.getHostAddress

BILLMYAIM 2010-07-05 10:15:41
软件开发时遇到这个问题,我们开发的C/S系统,客户端机器全部是WINDOWSXP,客户端获取IP用java.net.InetAddress.getHostAddress来获取的,但是有的客户端还是获取不成功,代码如下

InetAddress ipAddress = new InetAddress();
String ip = ipAddress.getHostAddress();

获取完后有的ip为空,为什么?大侠们帮我看看到底为什么?现在我们问题是这样的,不用IP也可以,我们要求一台机器上启动一个的我们的C/S系统,要保证启动的C/S系统在服务器上注册唯一的ID,我们目前是GUI加IP的格式,但是因为有时候IP获取不到,所以还存在问题。
哪位大侠有一个万全之策没有,就是保证这个唯一ID一定能获取到,并且能够唯一区分不同的机器,下次这台机器的C/S系统登录时还是这个ID。
我也考虑过用获取MAC地址,但是不知道java.net.InetAddress获取的MAC是不是一定能获取到,既然用java.net.InetAddress获取IP都成问题,获取MAC是不是更有问题呢。
大侠们帮我看看,谢谢!
...全文
2636 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
init2017 2011-11-29
  • 打赏
  • 举报
回复
在吗?楼主,我有个java在双网卡机器上获取IP地址的问题,跟你的帖子一样。我想向您请教这个问题最后是如何解决的呢?能留个号码吗?或者我给您拨过去。我的email是:ouzhijun@huawei.com
zn85600301 2010-11-30
  • 打赏
  • 举报
回复
为什么不用config命令呢?
Runtime.getRuntime().exec()
自己去截取IP 和MAC 地址就行了
不过还要考虑双网卡的情况 也许你只要一个IP就够了··
cqumomo 2010-11-30
  • 打赏
  • 举报
回复
http://momodog.javaeye.com/blog/295946
这个你看看
so185582 2010-08-19
  • 打赏
  • 举报
回复

public static String getServerIP(){
InetAddress[] inetAdds;
String serverIP = null;
try
{
inetAdds = InetAddress.getAllByName(InetAddress.getLocalHost().getHostName());

for(int i = 0 ; i < inetAdds.length; i++){
serverIP = inetAdds[i].getHostAddress();
System.out.println(serverIP );
}
}
catch (UnknownHostException e)
{
logger.error("读取IP地址异常",e);
}
return serverIP;
}

如果机子有多网卡,能打印出所有IP地址
cooldog7147 2010-08-19
  • 打赏
  • 举报
回复
需要在网卡处于激活的状态下,才能获取到IP。
BILLMYAIM 2010-07-07
  • 打赏
  • 举报
回复
我用的就是兄弟的第一种方法 * 获取本地主机IP,但是有的机器上获取到的IP是空,有没有一个好办法确保一定能够获取到呢?

[Quote=引用 11 楼 thc1987 的回复:]
引用 7 楼 billmyaim 的回复:
在我的开发机器上也可以获取到IP,在用户的二十多台机器上大部分也可以获得到,有部分机器获取不到,有没有方法保证在WINDOWSxp下一定能获取到IP或者MAC呢!多谢!

试试看这个两个方法:

Java code
/**
* 获取本地主机IP
*
* @return
*/
publ……
[/Quote]
铁匠梁老师 2010-07-07
  • 打赏
  • 举报
回复
JDK1.6有接口获取
xiaoguan_Java 2010-07-07
  • 打赏
  • 举报
回复
String localIp = InetAddress.getLocalHost().getHostAddress();
injuer 2010-07-07
  • 打赏
  • 举报
回复
这不是程序问题,请检查部分机器的本地连接设置,并使用NET命令设置网卡参数...........
ronniegxq 2010-07-06
  • 打赏
  • 举报
回复
不懂帮顶
猿敲月下码 2010-07-06
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 billmyaim 的回复:]
在我的开发机器上也可以获取到IP,在用户的二十多台机器上大部分也可以获得到,有部分机器获取不到,有没有方法保证在WINDOWSxp下一定能获取到IP或者MAC呢!多谢!
[/Quote]
试试看这个两个方法:
/**
* 获取本地主机IP
*
* @return
*/
public static String getLocalIP() {
InetAddress addr;
String localIP = null;
try {
addr = InetAddress.getLocalHost();
localIP = addr.getHostAddress();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return localIP;
}


/**
* 获取本地MAC地址
*/
public static String getLocalMAC() {
InetAddress address;
String sMAC = null;
try {
address = InetAddress.getLocalHost();
NetworkInterface ni = NetworkInterface.getByInetAddress(address);
byte[] mac = ni.getHardwareAddress();
Formatter formatter = new Formatter();
for (int i = 0; i < mac.length; i++) {
sMAC = formatter.format(Locale.getDefault(), "%02X%s", mac[i],
(i < mac.length - 1) ? "-" : "").toString();
}
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (SocketException e) {
e.printStackTrace();
}
return sMAC;
}
jn789987 2010-07-06
  • 打赏
  • 举报
回复
顶一把贴,我也在研究这个问题~~
coolbamboo2008 2010-07-06
  • 打赏
  • 举报
回复
MAC地址不可以改么?
BILLMYAIM 2010-07-06
  • 打赏
  • 举报
回复
顶。。
BILLMYAIM 2010-07-05
  • 打赏
  • 举报
回复
呵呵,不是的,用户那边有二十多台机器,有一部分获取不到IP,我开发机器上可以获取到。
我开发机器不能上网所以不能把代码粘贴复制上来,上面代码都是我在这个文本里面手写的。
david-foreststoe 2010-07-05
  • 打赏
  • 举报
回复
就算是不能上网也可以取得ip吧: 127.0.0.1
BILLMYAIM 2010-07-05
  • 打赏
  • 举报
回复
不好意思,是我写错了,因为开发机器不能上网,这是我在这个上面手写。
工程里面的代码是下面这样写的。
InetAddress ipAddress = InetAddress.getLocalHost();
String ip = ipAddress.getHostAddress();
rushly 2010-07-05
  • 打赏
  • 举报
回复
InetAddress ipAddress = new InetAddress();
这个可以?

去查下API,至少要有个参数什么的吧!
BILLMYAIM 2010-07-05
  • 打赏
  • 举报
回复
顶一个贴
加载更多回复(2)

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧