關於Java獲取本地伺服器IP的問題
Java獲取本地伺服器IP,我們最簡單的寫法:
import java.net.InetAddress; public class CatchIp{ public static void main(String[] args) { try { // 獲取IP地址 String ip = InetAddress.getLocalHost().getHostAddress(); System.out.println("IP地址:"+ip); } catch (Exception e) { System.out.println("異常:" + e); e.printStackTrace(); } } }
但是這樣有個問題,我們在windows系統,我們可以獲取正確的IP
但是放在linux,可能是獲取的IP地址為:127.0.0.1
而且在生產系統中,一臺伺服器可能有很多張網絡卡,這樣獲取ip比較麻煩,具體要了解生產系統伺服器的IP地址我們可以參考這個網址:
http://blog.163.com/[email protected]/blog/static/3259410020117493943770/?suggestedreading
程式碼如下:
當然 ,我們要是想獲取伺服器的唯一資訊,經常有個偷懶的做法,那就是獲取伺服器的hostname,即主機名,寫法也比較統一簡單:/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package org.lib.com; /** * * @author Administrator */ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.Inet6Address; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; public class TestAddr { /** * 獲取本機所有IP */ private static String[] getAllLocalHostIP() { List<String> res = new ArrayList<String>(); Enumeration netInterfaces; try { netInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; while (netInterfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) netInterfaces .nextElement(); System.out.println("---Name---:" + ni.getName()); Enumeration nii = ni.getInetAddresses(); while (nii.hasMoreElements()) { ip = (InetAddress) nii.nextElement(); if (ip.getHostAddress().indexOf(":") == -1) { res.add(ip.getHostAddress()); System.out.println("本機的ip=" + ip.getHostAddress()); } } } } catch (SocketException e) { e.printStackTrace(); } return (String[]) res.toArray(new String[0]); } public static String getLocalIP() { String ip = ""; try { Enumeration<?> e1 = (Enumeration<?>) NetworkInterface.getNetworkInterfaces(); while (e1.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) e1.nextElement(); System.out.println ("getLocalIP--nic.getDisplayName ():" + ni.getDisplayName ()); System.out.println ("getLocalIP--nic.getName ():" + ni.getName ()); if (!ni.getName().equals("eth0")) { continue; } else { Enumeration<?> e2 = ni.getInetAddresses(); while (e2.hasMoreElements()) { InetAddress ia = (InetAddress) e2.nextElement(); if (ia instanceof Inet6Address) continue; ip = ia.getHostAddress(); } break; } } } catch (SocketException e) { e.printStackTrace(); System.exit(-1); } return ip; } public static String getWinLocalIP () { String ip = ""; try { Enumeration <?> e1 = (Enumeration <?>) NetworkInterface.getNetworkInterfaces (); while (e1.hasMoreElements ()) { NetworkInterface ni = (NetworkInterface) e1.nextElement (); System.out.println ("getWinLocalIP--nic.getDisplayName ():" + ni.getDisplayName ()); System.out.println ("getWinLocalIP--nic.getName ():" + ni.getName ()); Enumeration <?> e2 = ni.getInetAddresses (); while (e2.hasMoreElements ()) { InetAddress ia = (InetAddress) e2.nextElement (); ip = ia.getHostAddress (); } } } catch (SocketException e) { e.printStackTrace (); System.exit (-1); } return ip; } /** * 獲取本機所有實體地址 * * @return */ public static String getMacAddress() { String mac = ""; String line = ""; String os = System.getProperty("os.name"); if (os != null && os.startsWith("Windows")) { try { String command = "cmd.exe /c ipconfig /all"; Process p = Runtime.getRuntime().exec(command); BufferedReader br = new BufferedReader(new InputStreamReader(p .getInputStream())); while ((line = br.readLine()) != null) { if (line.indexOf("Physical Address") > 0) { int index = line.indexOf(":") + 2; mac = line.substring(index); break; } } br.close(); } catch (IOException e) { } } return mac; } public String getMacAddress(String host) { String mac = ""; StringBuffer sb = new StringBuffer(); try { NetworkInterface ni = NetworkInterface.getByInetAddress(InetAddress .getByName(host)); // byte[] macs = ni.getHardwareAddress(); // for (int i = 0; i < macs.length; i++) { // mac = Integer.toHexString(macs[i] & 0xFF); // // if (mac.length() == 1) { // mac = '0' + mac; // } // // sb.append(mac + "-"); // } } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } mac = sb.toString(); mac = mac.substring(0, mac.length() - 1); return mac; } /** * @param args */ public static void main(String[] args) { TestAddr.getAllLocalHostIP(); System.out.println("LocalIP:"+TestAddr.getLocalIP()); System.out.println("getWinLocalIP:"+TestAddr.getWinLocalIP()); System.out.println(TestAddr.getMacAddress()); } }
import java.net.InetAddress; public class CatchHostname{ public static void main(String[] args) { try { // 獲取計算機名 String name = InetAddress.getLocalHost().getHostName(); System.out.println("計算機名:"+name); } catch (Exception e) { System.out.println("異常:" + e); e.printStackTrace(); } } }
相關推薦
關於Java獲取本地伺服器IP的問題
Java獲取本地伺服器IP,我們最簡單的寫法: import java.net.InetAddress; public class CatchIp{ public static void main(String[] args) { try
Java獲取本地伺服器Ip的方法
@SuppressWarnings("rawtypes")private static String getHostIp() {Enumeration allNetInterfaces = null;try {allNetInterfaces = NetworkInterf
java 獲取本地系統IP 及網咯IP
public static void main(String[] args) { try { InetAddress address = InetAddress.getLocalHost();//獲取的是本地的IP地址 //PC-20140317PXKX/192.168.0.121
java獲取本地的ip地址
/*** 獲取本機的IP* * @return Ip地址*/public static String getLocalHostIP() throws Exception {String ip = null;/** 返回本地主機。 */InetAddress addr = I
java獲取本地真實ip
一、問題在獲取本地ip這個問題上遇見了問題。1、InetAddress.getLocalHost()得到的是VMnet8的ip地址,而並非本地真實ip。2、InetAddress.getLocalHost().getHostAddress()獲取到的是127.0.0.1二、解
java獲取本地IP和伺服器IP
java獲取IP地址 最近公司在做日誌報警服務,並將異常資訊推送到簡聊,需要在異常資訊上新增IP地址,用於快速定位異常位置。總結以下知識點: 獲取本地IP地址 String address = InetAddress.getLocalHost().ge
Java獲取本地IP地址
import java.net.*; publicclass ip5 { publicstaticvoid main(String args[]) throws Exception { String ip = InetAddress.getLoc
Java獲取本地IP和計算機名
package com.bjsxt.base.bhz.nio.test; import java.net.InetAddress; import java.net.UnknownHostException; public class Test {public static
java 獲取本地機器外網的IP地址
package org.shuochen.test.network; import java.net.InetAddress; import java.net.NetworkInterface; import java.net.SocketException; import java.util.Enumer
java獲取本地區域網的外網IP ....
近日為了滿足2個屋子裡人的通訊需要,需要將本地的外網IP告訴給另一個屋子裡的人。以前都是在群裡喊一句,我這裡的IP是XXXX,有一天自己突發奇想,想通過程式來實現這個自動化通知的過程。於是自己給自己定了需求。 需求:基本目標實現開機將本地的路由WAN
java Socket 獲取本地主機ip
package cn.itcast.net.p1.ip; import java.net.InetAddress; import java.net.UnknownHostException; public class IPDemo { /** *
java 獲取本地路由器分配給電腦的IP地址與主機名相關
本人最近做PC端專案,遇到一個ip地址相關通訊方面的問題,經過網上資料的一些查詢覺得目前此方法相對較好,特在此做個記錄,各位路過的大神,如有更好的方法,麻煩留下解答,讓小弟借鑑下. 下面進入正題,首先獲取到本機的ip地址,比較簡單(主要通過cmd指令arp -
java獲取本地ip
package com.tianjian.property.jieshuns.controller; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.In
Java獲取客戶端IP
不為 pty 獲取 code 中間 clas 代理服務器 gin servle 在開發工作中,我們常常需要獲取客戶端的IP。一般獲取客戶端的IP地址的方法是:request.getRemoteAddr();但是在通過了Apache,Squid等反向代理軟件就不能獲取到客戶端
Java獲取服務器IP和客戶端IP
audio sta ignorecas als style param servlet controls cal 服務器IP: String addr = InetAddress.getLocalHost().getHostAddress(); 說明:很明顯上面
java獲取客戶端IP和服務器IP
ati () ted unknown lock back thead ssi 簡單的 一、Java獲取服務器IP(轉自:https://www.cnblogs.com/george93/p/6306579.html) //方法一,也是最簡單的一種。 String
獲取linux伺服器IP 獲取windows伺服器IP
if (os.toLowerCase ().startsWith ("win")) { //window伺服器IP &
Dorado7 AjaxAction Java獲取客戶端IP
@Expose @DataProvider public String getCurrentEmployeeUserPrivilege(HttpServletRequest request, HttpServletResponse response){ String ip = req
【牛腩】 完美解決 Request.ServerVariables["REMOTE_ADDR"]獲取本地主機ip出現 : : 1
前言: 在做牛腩收費系統的時,獲取本地主機的ip地址,出西安了::1,一開始我 毫不在意,但是後來我越看越彆扭!就從網上找到了解決辦法,接下來和我一塊來搞定它吧! 有時候我們用的地址是ipv6,ipv6的預設的主機地址就是 : : 1,它就是我們要找的主機地址,但是我們自己想要的
java獲取客戶端ip地址
public static String getIp2(HttpServletRequest request) { String ip = request.getHeader("X-Forwarded-For"); if(StringUtils.isNotEmpty(ip) && !"unKn