java中得到计算机MAC网卡标识,IP,计算机名称等唯一标识问题
2010-12-23 15:58
369 查看
网站中投票器的处理机制
第一,直接用IP判断,这种方式就是一个IP只能投票一定次数,方法可用下面代码中的getIpAddr() 中得到ipAddress的返回值判断即可。
第二,用MAC网卡标识进行判断,一台机器只能投票一定次数,方法可用下面代码中的getMAXAddress.但是此方法在很多网关设置了防火墙的情况下无法得到,而且还会造成异常警告,而且捕捉这个警告的时间还非常长,因此慎用。
第三,用ip地址和计算机名称联合判断,一个网段中计算机名称是不允许重名的,因此可用ip加计算机名称联合判断。方法可用下面代码中的getIpAddr() 的最后返回值即可
第一,直接用IP判断,这种方式就是一个IP只能投票一定次数,方法可用下面代码中的getIpAddr() 中得到ipAddress的返回值判断即可。
第二,用MAC网卡标识进行判断,一台机器只能投票一定次数,方法可用下面代码中的getMAXAddress.但是此方法在很多网关设置了防火墙的情况下无法得到,而且还会造成异常警告,而且捕捉这个警告的时间还非常长,因此慎用。
第三,用ip地址和计算机名称联合判断,一个网段中计算机名称是不允许重名的,因此可用ip加计算机名称联合判断。方法可用下面代码中的getIpAddr() 的最后返回值即可
/** * 根据IP地址获取客户端的MAC * @param ipAddress * @return * @throws IOException */ public static String getMACAddress(String ipAddress) throws IOException { System.out.println("客户端的IP地址为:"+ipAddress); String str = "", strMAC = "", macAddress = ""; Process pp = Runtime.getRuntime().exec("nbtstat -a " + ipAddress); InputStreamReader ir = new InputStreamReader(pp.getInputStream()); LineNumberReader input = new LineNumberReader(ir); for (int i = 1; i < 100; i++) { str = input.readLine(); if (str != null) { if (str.indexOf("MAC Address") > 1) { strMAC = str.substring(str.indexOf("MAC Address") + 14,str.length()); break; } } } if (strMAC.length() < 17) { return "Error!"; } macAddress = strMAC.substring(0, 2) + ":" + strMAC.substring(3, 5)+ ":" + strMAC.substring(6, 8) + ":" + strMAC.substring(9, 11)+ ":" + strMAC.substring(12, 14) + ":"+ strMAC.substring(15, 17); System.out.println("客户端的MAC地址为:"+macAddress); return macAddress; } /** * 获取客户端IP地址 * @return */ public static String getIpAddr() throws IOException{ HttpServletRequest req=ServletActionContext.getRequest(); String ipAddress = req.getHeader("x-forwarded-for"); if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) ipAddress = req.getHeader("Proxy-Client-IP"); if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) ipAddress = req.getHeader("WL-Proxy-Client-IP"); if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) ipAddress = req.getHeader("HTTP_X_FORWARDED_FOR"); if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) ipAddress = req.getHeader("HTTP_CLIENT_IP"); if(ipAddress == null || ipAddress.length() == 0 || "unknown".equalsIgnoreCase(ipAddress)) ipAddress = req.getRemoteAddr(); String host = req.getRemoteHost(); String ip = ipAddress+":"+host; System.out.println("访问者IP="+ip); return ip; }
相关文章推荐
- java:得到本机或网站的IP和计算机名称
- Java获取计算机的名称、IP、环境变量的配置信息
- 【分享】Java程序获取本机ip,mac,os名称,版本等
- 用java得到w2k计算机上的网卡物理地址
- 主机上有多个网卡用java指定获取某一个网卡ip的问题
- PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
- JAVA获取计算机的IP、名称、操作系统等信息
- JAVA获取计算机的IP、名称、操作系统等信息
- 用java得到w2k计算机上的网卡物理地址
- PHP获得计算机的唯一标识[cpu,网卡]
- JAVA获取计算机的IP、名称、操作系统等信息
- LAN内两台计算机具有相同MAC和IP的问题
- Java/JSP获得客户端网卡MAC地址的三种方法解析(附:获得真实IP)
- PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
- 获取计算机名称,IP,MAC地址
- java获取本机ip,mac,os名称,版本等
- 利用Ip Helper Api 来得到局域网中计算机MAC 地址的一个程序
- java:得到本机IP的MAC地址
- 用VBS方法获得双网卡或多网卡的IP,MAC,计算机名方法
- js获取mac地址及ip,获取计算机名称及计算机的用户名