InetAddress.getLocalHost問題

來源:互聯網
上載者:User

今天把在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,返回本地主機。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.