java獲取客戶端地址
① 服務端怎麼獲取客戶端的ip java
網路通信可分為兩種模式:TCP有連接的通信
UDP無連接的通信
依照上述的問題我可以理解為你是要進行有連接的通信。是要經過三次握手才能實現可靠的連接
第一次:建立連接時三次握手,客戶端發送syn包(syn=j)到伺服器,並進入SYN_SENT狀態,等待伺服器確認;SYN(Synchronize Sequence Numbers)同步序列號。
伺服器端即可使用:
Socket s=serverSocket.accept();
String clientIP=s.getInetAddress().toString();
這就實現了java伺服器端獲取到連接此伺服器的客戶端的IP了,你若想實現獲取所有連接此伺服器的客戶端的IP,你可以把每次accept()返回的socket放進全局的Vector裡面,然後在遍歷這個vector方法就同上代碼咯……
② Java代碼如何獲取客戶端的MAC地址
public String getMAC() { String mac = null; try { Process pro = Runtime.getRuntime().exec("cmd.exe /c ipconfig/all"); InputStream is = pro.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); String message = br.readLine(); int index = -1; while (message != null) { if ((index = message.indexOf("Physical Address")) > 0) { mac = message.substring(index + 36).trim(); break; } message = br.readLine(); } System.out.println(mac); br.close(); pro.destroy(); } catch (IOException e) { System.out.println("Can't get mac address!"); return null; } return mac; }
③ java獲取客戶端ip的方法我怎麼調用
一般獲取客戶端的IP地址的方法是:request.getRemoteAddr();但是在通過了Apache,Squid等反向代理軟體就不能獲取到客戶掘則端的真實IP地址了。
原因:由於在客戶端和服判讓棚務之間增加了中間代理,因此伺服器無法直接拿到客戶端的IP,伺服器端應用滑喚也無法直接通過轉發請求的地址返回給客戶端。
④ java servlet獲取客戶端IP
在JSP里,獲取客戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效的。但是在通過了 Apache,Squid等反向代理軟體就不能獲取到客戶端的真實IP地址了。如果使用了反向代理軟體,用 request.getRemoteAddr()方法獲取的IP地址是:127.0.0.1或 192.168.1.110,而並不是客戶端的真實IP。
request.getRemoteAddr()的方法獲取的IP實際上是代理伺服器的地址,並不是客戶端的IP地址。
於是可得出獲得客戶端真實IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
if (request.getHeader("x-forwarded-for") == null) {
return request.getRemoteAddr();
}
return request.getHeader("x-forwarded-for");
}
你可以寫一個Filter配置在web.xml中 讓伺服器啟動的時候就開始監聽 直到伺服器停止!
⑤ java怎麼獲取用戶客戶端mac地址
以下代碼實現瀏覽器中獲取mac地址放入一個輸入框或隱藏域,隨登錄信息一起提交到伺服器。因為安全級別的關系可能會出現警告,可選擇允許執行。長期使用的話建議用戶將改站點加入信任站點或把安全級別調低。
<HTML><HEAD><TITLE>WMI Scripting HTML</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo>
document.forms[0].txtMACAddr.value=unescape(MACAddr);
document.forms[0].txtIPAddr.value=unescape(IPAddr);
document.forms[0].txtDNSName.value=unescape(sDNSName);
//document.formbar.submit();
</SCRIPT>
<SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo>
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true)
{
if(objObject.MACAddress != null && objObject.MACAddress != "undefined")
MACAddr = objObject.MACAddress;
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined")
IPAddr = objObject.IPAddress(0);
if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined")
sDNSName = objObject.DNSHostName;
}
</SCRIPT>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY>
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
<SCRIPT language=JScript>
var service = locator.ConnectServer();
var MACAddr ;
var IPAddr ;
var DomainAddr;
var sDNSName;
service.Security_.ImpersonationLevel=3;
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration');
</SCRIPT>
<FORM id="formfoo" name="formbar" action="index.do" method="post"><INPUT value="00-11-11-B4-52-EF" name="txtMACAddr"> <INPUT value="210.42.38.50" name="txtIPAddr"> <INPUT value="zhupan" name="txtDNSName"> </FORM></BODY></HTML>