java獲取本地IP和伺服器IP
java獲取IP地址
最近公司在做日誌報警服務,並將異常資訊推送到簡聊,需要在異常資訊上新增IP地址,用於快速定位異常位置。總結以下知識點:
- 獲取本地IP地址
String address = InetAddress.getLocalHost().getHostAddress().toString();
這種方法能不能在Linux伺服器上直接獲取IP有待驗證
- 獲取伺服器IP地址
/**
* 設定異常資訊
* @param t 異常資訊。注意:這裡使用的是Throwable來接收引數,為什麼不是使用Exception?
* 因為使用Exception接收的話,不好獲取具體的異常資訊,所以這裡使用Throwable來接收,然後再
* 通過流的形式獲取具體的異常資訊
*/
public void setMsg(Throwable t) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
t.printStackTrace(new PrintStream(stream));
String exceptionMsg = stream.toString();
log.error(exceptionMsg); // 記錄到本地日誌
JSONObject obj = new JSONObject();
obj.element("authorName" , "異常報警");
obj.element("title", "IP為" + getServerIp() + "的又TM異常啦:");
obj.element("text", exceptionMsg);
post(obj);
}
/**
* 推送異常日誌資訊,
* @param json 請求引數是用 net.sf.json.JSONObject 封裝
*/
public void post(JSONObject json) {
HttpClient client;
HttpPost post;
try {
client = HttpClients.createDefault();
post = new HttpPost(logServer); // logServer 是簡聊的聚合服務地址
post.setHeader("Content-Type", "application/json");
post.addHeader("Authorization", "Basic YWRtaW46");
StringEntity s = new StringEntity(json.toString(), "utf-8");
s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(s);
// 傳送請求
HttpResponse httpResponse = client.execute(post);
if (httpResponse.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
log.info("請求伺服器失敗,請檢查推送伺服器");
}
} catch (Exception e) {
log.error("推送日誌異常資訊失敗");
e.printStackTrace();
}
}
/**
* 獲取伺服器地址
*
* @return Ip地址
*/
public String getServerIp() {
// 獲取作業系統型別
String sysType = System.getProperties().getProperty("os.name");
String ip;
if (sysType.toLowerCase().startsWith("win")) { // 如果是Windows系統,獲取本地IP地址
String localIP = null;
try {
localIP = InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
log.error(e.getMessage(), e);
}
if (localIP != null) {
return localIP;
}
} else {
ip = getIpByEthNum("eth0"); // 相容Linux
if (ip != null) {
return ip;
}
}
return "獲取伺服器IP錯誤";
}
/**
* 根據網路介面獲取IP地址
* @param ethNum 網路介面名,Linux下是eth0
* @return
*/
private String getIpByEthNum(String ethNum) {
try {
Enumeration allNetInterfaces = NetworkInterface.getNetworkInterfaces();
InetAddress ip;
while (allNetInterfaces.hasMoreElements()) {
NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
if (ethNum.equals(netInterface.getName())) {
Enumeration addresses = netInterface.getInetAddresses();
while (addresses.hasMoreElements()) {
ip = (InetAddress) addresses.nextElement();
if (ip != null && ip instanceof Inet4Address) {
return ip.getHostAddress();
}
}
}
}
} catch (SocketException e) {
logger.error(e.getMessage(), e);
}
return "獲取伺服器IP錯誤";
}
第一次寫部落格,第一次用MarkDown,太多的第一次,加油!
相關推薦
java獲取本地IP和伺服器IP
java獲取IP地址 最近公司在做日誌報警服務,並將異常資訊推送到簡聊,需要在異常資訊上新增IP地址,用於快速定位異常位置。總結以下知識點: 獲取本地IP地址 String address = InetAddress.getLocalHost().ge
客戶端IP和伺服器IP講解?
IP(網路之間互連的協議) 網際網路協議地址(英語:Internet Protocol Address,又譯為網際協議地址),縮寫為IP地址(英語:IP Address),是分配給網上上使用網際協議(英語:Internet Protocol, IP)的裝置的數字標籤。常見的IP地址分為IPv
java 當本地連線和無線網連結同時存在時,獲取目標IP同一網段的本地連結IP地址
import java.net.Inet4Address; import java.net.InetAddress; import java.net.InterfaceAddress; import java.net.NetworkInterface; import java
Java獲取客戶端所在的IP地址和伺服器地址
/** 2 * 獲取本地IP地址 3 * @return 4 */ public static void main(String[] args) { 2
Java獲取本地IP和計算機名
package com.bjsxt.base.bhz.nio.test; import java.net.InetAddress; import java.net.UnknownHostException; public class Test {public static
關於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、MAC地址和網卡名稱
sans mon any flex exc consola 獲取本地ip network log java獲取本機名稱、IP、MAC地址和網卡名稱摘自:https://blog.csdn.net/Dai_Haijiao/article/details/80364370 20
java 獲取本地系統IP 及網咯IP
public static void main(String[] args) { try { InetAddress address = InetAddress.getLocalHost();//獲取的是本地的IP地址 //PC-20140317PXKX/192.168.0.121
Java獲取本地IP地址
import java.net.*; publicclass ip5 { publicstaticvoid main(String args[]) throws Exception { String ip = InetAddress.getLoc
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 獲取本地路由器分配給電腦的IP地址與主機名相關
本人最近做PC端專案,遇到一個ip地址相關通訊方面的問題,經過網上資料的一些查詢覺得目前此方法相對較好,特在此做個記錄,各位路過的大神,如有更好的方法,麻煩留下解答,讓小弟借鑑下. 下面進入正題,首先獲取到本機的ip地址,比較簡單(主要通過cmd指令arp -
Java獲取客戶端及區域網ip和埠地址
在java專案Controller層加入下面程式碼: public Map<String,Object>selectAccessory(HttpServletRequest request){ //public Map<String,Object>
java獲取本地的ip地址
/*** 獲取本機的IP* * @return Ip地址*/public static String getLocalHostIP() throws Exception {String ip = null;/** 返回本地主機。 */InetAddress addr = I
java獲取本地ip
package com.tianjian.property.jieshuns.controller; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.In
php獲取使用者和伺服器ip及其地理位置詳解
瀏覽器訪問獲取使用者ip: /** * php獲取使用者真實 IP * 注意這種方式只適用於瀏覽器訪問時 */ function getIP() { if (isset($_SERVER)){ if (isset($_SERVER["HTTP_
java獲取本地真實ip
一、問題在獲取本地ip這個問題上遇見了問題。1、InetAddress.getLocalHost()得到的是VMnet8的ip地址,而並非本地真實ip。2、InetAddress.getLocalHost().getHostAddress()獲取到的是127.0.0.1二、解
Java獲取HTTP請求的真實IP
本文介紹使用Java獲取HTTP請求的真實IP,包括了對反向代理、代理客戶端、多個IP情況的處理。 請參考以下程式碼片段: /** * 獲取真實IP * @param request 請求體 * @return 真實IP */ public s
Java獲取客戶端使用者真實IP地址
在JSP裡,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了Apache,Squid,nginx等反向代理軟體就不能獲取到客戶端的真實IP地址了。 如果使用了反向代理軟體,將http://192.168.1.110