InetAddress.getLocalHost()详解及异常处理
来源:互联网 发布:淘宝有好看的衣服牌子 编辑:程序博客网 时间:2024/05/16 11:27
//return the raw IP address in a string formatInetAddress.getLocalHost().getHostAddress();
//return the raw IP address of this objectInetAddress.getLocalHost().getAddress();
本机的一个运行结果:
192.168.1.104[B@14318bb
InetAddress.getLocalHost()异常处理:
使用:InetAddress.getLocalHost() 出现异常:
“Reason: java.net.UnknownHostException zw_65_43 : …..
问题原因是在系统的 /etc/Hostname中配置了“zw_65_43” 作为主机名,
而在/etc/hosts文件中没有 相应的“zw_65_43”。
简单的解决办法是对应关系配好就可以,甚至删除/etc/Hostname这个文件也可以。
深层的原因: 在大多数Linux操作系统中,都是以/etc/hosts中的配置查找主机名的,
但是 Detian based system 用/etc/Hostname文件中的配置做主机名。
而Java 的InetAddress.java 调用 InetAddressImpl.java 的
public native String getLocalHostName() throws UnknownHostException; 来获取本地主机名,
Java 的这个方法是native的,是本地系统的一个实现,所以在本地配置出现问题的情况下,Java 代码出现问题。
依靠本机的机器名去查询IP 地址,和 ping hostname
返回的 IP 地址是同一个,并不是 ipconfig 方法得到的 eth0 IP 地址.
hostname 查看本机名称
a. 若本机名称不是一个IP地址, 比如是”sohu”,则必须在/etc/hosts中配置 sohu对应本机IP,
否则java.net.InetAddress.getLocalHost会抛出java.net.UnknownHostException异常.b. 若本机名称是一个IP地址,而且必须是本机某块网卡的IP,
c. 第三种情况比较麻烦。倘若本机名称是一个IP地址,但不是本机某块网卡的IP,或者只是某个IP地址的一部分,
比如192.168(这是我遇到过的),那么执行java.net.InetAddress.getLocalHost().getHostAddress()会得到192.0.0.168,
java.net.InetAddress.getLocalHost().getHostAddress()不会抛出异常,但相关访问会停滞很久,
原因是他在查找192.0.0.168这个地址, 若网络中不存在这个地址,最终会抛出Connection timed out异常;
若网络中存在这个地址,Connection refused to host这个异常将被抛出,这些显然都不是想要的
结论:
- 设置本机名称:hostname mName xxx最好不是写IP地址的形式,若写则必须是本机的完全IP形式(不要只写一半)
- 在/etc/hosts里加一行 本机IP mName
- 用InetAddress.getLocalHost().getHostAddress()测试一下结果是否是与本机IP一致
- InetAddress.getLocalHost()详解及异常处理
- InetAddress.getLocalHost()详解
- InetAddress.getLocalHost()详解
- InetAddress.getLocalHost() java.net.UnknownHostException 异常
- InetAddress.getLocalHost问题
- InetAddress.getLocalHost() throws UnknownHostException
- InetAddress.getLocalHost().getHostName()
- linux 的java写程序报异常java.net.InetAddress.getLocalHost(InetAddress.java:1505)解决
- InetAddress.getLocalHost().getHostAddress(); 127.0.0.1
- 记一次本机InetAddress.getLocalHost()引起的项目启动变慢及解决过程
- Blackboard problem: InetAddress.getLocalHost always returns "localhost"
- java InetAddress.getLocalHost() 在linux里实现
- mac系统 InetAddress.getLocalHost().getHostAddress()的bug
- java.net.InetAddress.getLocalHost(InetAddress.java:1473) java.net.Unknown
- ant 详解及异常处理
- java InetAddress.getLocalHost().getHostAddress() 获取本机真实IP
- InetAddress.getLocalHost().getHostAddress()获取的ip为127.0.0.1
- InetAddress类详解
- Struts2基础知识(三)
- apache+tomcat集群配置
- 3递归爬楼梯
- CPU流水线的探秘之旅
- hdu5093Battle ships(二分图)
- InetAddress.getLocalHost()详解及异常处理
- Hadoop之MapReduce的HelloWorld(七)
- android studio 程序真机运行中文显示乱码
- HDU 2112
- 软件开发的常用开发模式
- 搭建gpu的theano
- C++学习(一)——标准库类型之string全解析
- 牛客网今日头条笔试详解
- Java基础