`
chainhou
  • 浏览: 172295 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

InetAddress.getLocalHost().getHostAddress()获取的IP不正确

 
阅读更多
今天把在Windows下运行很正常的程序拿到Linux下测试,却出现了问题,经过检查发现是InetAddress.getLocalHost().getHostAddress() 取本地IP地址时出现了问题。因为期望得到的IP是222.xxx.xxx.xx,但实际打印出来的IP地址却是127.0.0.1。

查看 /etc/hosts 文件,里面有一条本机名和 222.xxx.xxx.xx这个 IP 对应的记录。把它注释掉,然后修改本机的主机名,又在 hosts 文件中加入主机名和222. xx.xx.xx的对应,问题解决了。

通过问题的解决方法,我们可以发现InetAddress.getLocalHost().getHostAddress() 方法找到本机 IP的实现方法——依靠本机的机器名去查询IP 地址,和 ping `hostname` 返回的 IP 地址是同一个,并不是 ipconfig 方法得到的 eth0 IP 地址。

getHostAddress() :返回类型是String,返回 IP 地址字符串(以文本表现形式)。

getLocalHost():返回类型是static InetAddress,返回本地主机
分享到:
评论

相关推荐

    Java高级程序设计:第14章-基于Socket的网络编程.pptx

    InetAddress localAddr = InetAddress.getLocalHost();//获得本机InetAddress System.out.println(localAddr.getHostName());//输出主机名 System.out.println(localAddr.getHostAddress());//输出IP地址 // 通过...

    获取本机ip地址

    利用InetAddress.getLocalHost()获取本机ip地址和本地主机名

    jsp获得本地及serverIP的简单方法

    InetAddress addr = InetAddress.getLocalHost(); String ip = addr.getHostAddress().toString();//获得本机IP //访问的server的ip是:System.out.println(“访问的ip是:” + ip); //访问者的ip是:System.out....

    logback-flume-appender:Logback追加程序将日志消息转发到Flume代理

    hostname :主机名,如果未设置,则通过Box主机名通过InetAddress.getLocalHost().getHostName()进行推断InetAddress.getLocalHost().getHostName() type :日志类型,如果未设置,将被忽略 flumeAgents :以逗号...

    InetAddress 类中dns解析后域名、ip清空

    InetAddress 类进行域名解析后,域名和ip会保存,如何清除。本资源娓娓道来。

    TCP并发上传——java源码

    new TCPClient(bufOut.toByteArray(), InetAddress.getLocalHost(), 1211); break; } else { bufOut.write(buf, 0, len); } } } catch (FileNotFoundException e) { e.printStackTrace(); } catch ...

    socket编程集萃

    Socket client=new Socket(InetAddress.getLocalHost(),5678);客户机必须知道有关服务器的IP地址,对于着一点Java也提供了一个相关的类InetAddress 该对象的实例必须通过它的静态方法来提供,它的静态方法主要提供了...

    asp.net getRemoteAddr()与 getRemoteHost()的区别

    getRemoteAddr():获得客户端的IP地址 getRemoteHost():获得客户端电脑的名字,若失败,则返回客户端电脑的IP地址 InetAddress ia = InetAddress.getLocalHost(); String iad = ia.getHostAddress();//主机IP ...

    javasocket编程.pdf

    首先提出要求因此Java同样提供了个Socket对象来对其进行支持只要客户方创建个Socket例子对象进行支持 就可以了Socket client = Socket(InetAddress.getLocalHost,5678);客户机必须知道有关服务器IP地址对 于着点Java...

    Email-Messenger

    如果希望两台计算机相互发送消息,则必须将EmailClient类中的字段主机更改为InetAddress.getByName(“ Put-IP-Address-Here”)而不是InetAddress.getLocalHost()。 要查找计算机的IP地址,可以在命令行中键入...

    学习笔记(1):java网络编程:ip获取,tcp聊天、上传文件

    java网络编程 1、获取ip地址和域名 可能在生成日志的时候用到... InetAddress localHost = InetAddress.getLocalHost(); System.out.println(localHost); InetAddress byName1 = InetAddress.getByName("127.0.0.1");

    java 基于TCP网络编程

    InetAddress类 概念: 表示互联网协议(P)地址对象,封装了与该P地址相关的所有信息,并提供获取信息的常用方法。 方法: 1.public static InetAddress ...4.public String getHostAddress()获取IP地址字符串  5.publ

    序列号生成器

    InetAddress ip = InetAddress.getLocalHost(); byte[] ipByte = ip.getAddress(); lastip = ipByte[ipByte.length - 1]; } catch (UnknownHostException e) { e.printStackTrace(); } return lastip; }

    Spark中序列化问题

    val hostname = InetAddress.getLocalHost.getHostName println(hostname + @@@@@@@@@@@@@@@@) } 如果我们在程序中使用map操作使规则和数据进行匹配。 val r = lines.map(word => { val rules = new Rules //

    gethostname4j:简单的JNA库可从Java获取当前计算机的主机名

    gethostname4j 简单的JNA库可从Java获取当前计算机的主机名我很沮丧地发现InetAddress.getLocalHost().getHostName() Java惯用语在某些情况下返回localhost,而这似乎只能通过修改/etc/hosts来解决。 该库使用JNA...

    Java编程中利用InetAddress类确定特殊IP地址的方法

    主要介绍了Java编程中利用InetAddress类确定特殊IP地址的方法,InetAddress类是Java网络编程中一个相当实用的类,需要的朋友可以参考下

    InetAddress测试代码

    InetAddress类的代码,用来获取主机名和IP地址

    AndroidVideoCache (改成 okhttp 缓存)

    AdroidVideoCache是一个视频/音频缓存库,利用本地代理实现了边下边播,结合OKhttp 优点,进行缓存

    聊天系统计算机相关论文

    + InetAddress.getLocalHost().getHostAddress(); ps.println(info.append(userinfo)); ps.flush(); //将客户端线程实例化,并启动 Listener=newClentListener(this,nameText...

Global site tag (gtag.js) - Google Analytics