本文實例講述了Java獲取服務器IP及端口的方法。分享給大家供大家參考,具體如下:
前幾天寫過一個獲取遠程服務器的IP和端口的程序,從網上查了一些資料順便加一些自己的理解,希望對大家有所幫助:
struts2 獲取request
HttpServletRequest requet=ServletActionContext.getRequest();requet.getScheme()+"://"+requet.getServerName()+":"+requet.getServerPort()
(例如)結果為:http://localhost:8080/
request.getHeader("User-Agent"); //就是取得客戶端的系統版本request.getRemoteAddr(); //取得客戶端的IPrequest.getRemoteHost() //取得客戶端的主機名request.getRemotePort(); //取得客戶端的端口request.getRemoteUser(); //取得客戶端的用戶request.getLocalAddr(); //取得服務器IPrequest.getLocalPort(); //取得服務器端口
1、JSP中獲得當前應用的相對路徑和絕對路徑
根目錄所對應的絕對路徑:request.getRequestURI()
文件的絕對路徑 :application.getRealPath(request.getRequestURI());
當前web應用的絕對路徑 :application.getRealPath("/");
取得請求文件的上層目錄:new File(application.getRealPath(request.getRequestURI())).getParent()
2 Servlet中獲得當前應用的相對路徑和絕對路徑
根目錄所對應的絕對路徑:request.getServletPath();
文件的絕對路徑 :request.getSession().getServletContext().getRealPath(request.getRequestURI())
當前web應用的絕對路徑 :servletConfig.getServletContext().getRealPath("/");
ServletContext對象獲得幾種方式:
javax.servlet.http.HttpSession.getServletContext()javax.servlet.jsp.PageContext.getServletContext()javax.servlet.ServletConfig.getServletContext()
3.Java類中獲得絕對路徑
根據java.io.File的Doc文擋,可知: 默認情況下new File("/")代表的目錄為:System.getProperty("user.dir")
。
擴展:
上面的獲取IP方法,只能獲取到127.0.0.1,無語
在window下使用
InetAddress.getLocalHost().getHostAddress()
這種方法在linux卻只能取到127.0.0.1這個讓人無奈的地址。。。這簡直是讓人不能忍受的啊。。。這種地址不用獲取,我們誰不知道。。。
在網上搜索了很多,發現說這個問題的并不多,所以,我把找到的一段代碼分享給大家。。。當然這段代碼需要jdk1.5以上版本
Java代碼:
Enumeration<NetworkInterface> netInterfaces = null;try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println("DisplayName:" + ni.getDisplayName()); System.out.println("Name:" + ni.getName()); Enumeration<InetAddress> ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { System.out.println("IP:" + ips.nextElement().getHostAddress()); } }} catch (Exception e) { e.printStackTrace();}Enumeration<NetworkInterface> netInterfaces = null;try { netInterfaces = NetworkInterface.getNetworkInterfaces(); while (netInterfaces.hasMoreElements()) { NetworkInterface ni = netInterfaces.nextElement(); System.out.println("DisplayName:" + ni.getDisplayName()); System.out.println("Name:" + ni.getName()); Enumeration<InetAddress> ips = ni.getInetAddresses(); while (ips.hasMoreElements()) { System.out.println("IP:" + ips.nextElement().getHostAddress()); } }} catch (Exception e) { e.printStackTrace();}
這段代碼會輸出計算機中所有設備的ip,找需要的用吧,呵呵
希望本文所述對大家java程序設計有所幫助。
|
新聞熱點
疑難解答
圖片精選