java 擷取訪問者ip和mac地址

來源:互聯網
上載者:User

標籤:

擷取訪問者ip,代碼:

<%String sip="";try{ sip = (String)request.getRemoteAddr();}catch(Exception e){}%>

擷取訪問者mac地址,法是用UDP協議來發送查詢mac指令然後傳回值中解析mac。代碼

<%String smac = "";String sip = request.getHeader("x-forwarded-for");   if(sip == null || sip.length() == 0 || "unknown".equalsIgnoreCase(sip)) {       sip = request.getHeader("Proxy-Client-IP");   }   if(sip == null || sip.length() == 0 || "unknown".equalsIgnoreCase(sip)) {       sip = request.getHeader("WL-Proxy-Client-IP");   }   if(sip == null || sip.length() == 0 || "unknown".equalsIgnoreCase(sip)) {       sip = request.getRemoteAddr();   }   UdpGetClientMacAddr umac = new UdpGetClientMacAddr(sip);smac = umac.GetRemoteMacAddr();%>...<input value=<%=smac %> name="userMacAddr" size="20" style="width:150px" readonly="yes"> UdpGetClientMacAddr.javapackage cch;import java.io.*;import java.net.*;public class UdpGetClientMacAddr {    private String sRemoteAddr;    private int iRemotePort=137;    private byte[] buffer = new byte[1024];    private DatagramSocket ds=null;        public UdpGetClientMacAddr(String strAddr) throws Exception{        sRemoteAddr = strAddr;        ds = new DatagramSocket();    }        protected final DatagramPacket send(final byte[] bytes) throws IOException {     DatagramPacket dp = new DatagramPacket(bytes,bytes.length,InetAddress.getByName(sRemoteAddr),iRemotePort);     ds.send(dp);        return dp;    }        protected final DatagramPacket receive() throws Exception {     DatagramPacket dp = new DatagramPacket(buffer,buffer.length);     ds.receive(dp);     return dp;    }        protected byte[] GetQueryCmd() throws Exception {     byte[] t_ns = new byte[50];     t_ns[0] = 0x00;        t_ns[1] = 0x00;        t_ns[2] = 0x00;        t_ns[3] = 0x10;        t_ns[4] = 0x00;        t_ns[5] = 0x01;        t_ns[6] = 0x00;        t_ns[7] = 0x00;        t_ns[8] = 0x00;        t_ns[9] = 0x00;        t_ns[10] = 0x00;        t_ns[11] = 0x00;        t_ns[12] = 0x20;        t_ns[13] = 0x43;        t_ns[14] = 0x4B;                for(int i = 15; i < 45; i++)        {         t_ns[i] = 0x41;        }                t_ns[45] = 0x00;        t_ns[46] = 0x00;        t_ns[47] = 0x21;        t_ns[48] = 0x00;        t_ns[49] = 0x01;     return t_ns;    }        protected final String GetMacAddr(byte[] brevdata) throws Exception {          int i = brevdata[56] * 18 + 56;        String sAddr="";        StringBuffer sb = new StringBuffer(17);                        for(int j = 1; j < 7;j++)        {         sAddr = Integer.toHexString(0xFF & brevdata[i+j]);            if(sAddr.length() < 2)            {             sb.append(0);            }            sb.append(sAddr.toUpperCase());            if(j < 6) sb.append(‘:‘);        }        return sb.toString();    }        public final void close() {     try     {      ds.close();     }     catch (Exception ex){      ex.printStackTrace();     }    }        public final String GetRemoteMacAddr() throws Exception {     byte[] bqcmd = GetQueryCmd();     send(bqcmd);     DatagramPacket dp = receive();        String smac = GetMacAddr(dp.getData());        close();                return smac;    }}

  

java 擷取訪問者ip和mac地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.