本文實例講述了java獲取服務器ip及端口的方法。分享給大家供大家參考,具體如下:
前幾天寫過一個獲取遠程服務器的ip和端口的程序,從網上查了一些資料順便加一些自己的理解,希望對大家有所幫助:
struts2 獲取request
1
2
|
httpservletrequest requet=servletactioncontext.getrequest(); requet.getscheme()+ "://" +requet.getservername()+ ":" +requet.getserverport() |
(例如)結果為:http://localhost:8080/
1
2
3
4
5
6
7
|
request.getheader( "user-agent" ); //就是取得客戶端的系統版本 request.getremoteaddr(); //取得客戶端的ip request.getremotehost() //取得客戶端的主機名 request.getremoteport(); //取得客戶端的端口 request.getremoteuser(); //取得客戶端的用戶 request.getlocaladdr(); //取得服務器ip request.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對象獲得幾種方式:
1
2
3
|
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下使用
1
|
inetaddress.getlocalhost().gethostaddress() |
這種方法在linux卻只能取到127.0.0.1這個讓人無奈的地址。。。這簡直是讓人不能忍受的啊。。。這種地址不用獲取,我們誰不知道。。。
在網上搜索了很多,發現說這個問題的并不多,所以,我把找到的一段代碼分享給大家。。。當然這段代碼需要jdk1.5以上版本
java代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
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程序設計有所幫助。
原文鏈接:https://blog.csdn.net/huxiangen/article/details/70895730