随着经济水平与科技水平的不断进步与发展,越来越多的人开始谋求更好的发展,主动学习更多的技术。而java,就是很多人最中意的选择之一。今天主要为大家展示一些用java获得客户端地理位置的主要操作代码,希望对大家有所帮助。
首先,我们都知道,以前把程式发布的Server IP都写成一个IP-Config文件。为了避免发布程式,每次都去更改IP-Config,或是在不同Server上发布程式更改IP-Config,然后把IP-Config的MXL中的信息融入到java程式中。也就是自动获取服务器IP。参考了很多function,如下。
代码1:
String serverIP = ServletActionContext.getRequest() .getServerName();
代码2:
String serverIP = request.getLocalAddr();
上面两种方法,获取的都是127.0.0.1/loaclhost这样不准确的地址,所以推荐下面几个function,简单易懂,而且做过测试,在Apache反向代理,多Server的负载均衡(轮询)的情况下都可以正常运行。
实例展示一、
public String getServerIp() { try { Enumeration netInterfaces = NetworkInterface.getNetworkInterfaces(); InetAddress ip = null; while (netInterfaces.hasMoreElements()) { NetworkInterface ni = (NetworkInterface) netInterfaces .nextElement(); ip = (InetAddress) ni.getInetAddresses() .nextElement(); SERVER_IP = ip.getHostAddress(); if (!ip.isSiteLocalAddress() && !ip.isLoopbackAddress() && ip.getHostAddress() .indexOf(":") == -1) { SERVER_IP = ip.getHostAddress(); break; } else { ip = null; } } } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } return SERVER_IP; }
实例展示二、
public static String getLocalIP() { InetAddress addr = null; try { addr = InetAddress.getLocalHost(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } byte[] ipAddr = addr.getAddress(); String ipAddrStr = ""; for (int i = 0; i < ipAddr.length; i++) { if (i > 0) { ipAddrStr += "."; } ipAddrStr += ipAddr[i] & 0xFF; } //System.out.println(ipAddrStr); return ipAddrStr; }
实例展示三、
package com.mo.util; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.Map; import com.alibaba.fastjson.JSON; public class IpAddress { /** * 传人一个ip返回一个地理位置 * @param ip * @return */ public static String changeIpToAddress(String ip) { Map < String, String > map = changeJsonToMap(getAddressByIp(ip)); String country = revert(map.get("country")); String province = revert(map.get("province")); String city = revert(map.get("city")); return country + " " + province + "省 " + city + "市"; } /** * 传人一个ip返回一个地理位置(只有省市) * @param ip * @return */ public static String changeIpToAddressOnlyProAndCity(String ip) { Map < String, String > map = changeJsonToMap(getAddressByIp(ip)); String province = revert(map.get("province")); String city = revert(map.get("city")); return province + " " + city; } /** * 传人ip地址,出来的是unicode编码的json数据 * @return json字符串 * @throws IOException */ private static String getAddressByIp(String ip) { StringBuffer result; try { URL url = new URL("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + ip); URLConnection conn = url.openConnection(); BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line = null; result = new StringBuffer(); while ((line = reader.readLine()) != null) { result.append(line); } reader.close(); return result.toString(); } catch (IOException e) { System.out.println("ip没有找到"); } return "无法找到ip地址"; } /** * 将传人的JSON字符串封装为Map * @param json字符串 * @return 封装了map的json的数据 */ private static Map < String, String > changeJsonToMap(String address) { Map maps = (Map) JSON.parse(address); return maps; } /** * 将unicode转换为文字 * @param 传人一个unicode编码 * @return 返回一个汉字 */ private static String revert(String str) { str = (str == null ? "" : str); if (str.indexOf("\\u") == -1) //如果不是unicode码则原样返回 return str; StringBuffer sb = new StringBuffer(1000); for (int i = 0; i < str.length() - 6;) { String strTemp = str.substring(i, i + 6); String value = strTemp.substring(2); int c = 0; for (int j = 0; j < value.length(); j++) { char tempChar = value.charAt(j); int t = 0; switch (tempChar) { case 'a': t = 10; break; case 'b': t = 11; break; case 'c': t = 12; break; case 'd': t = 13; break; case 'e': t = 14; break; case 'f': t = 15; break; default: t = tempChar - 48; break; } c += t * ((int) Math.pow(16, (value.length() - j - 1))); } sb.append((char) c); i = i + 6; } return sb.toString(); } }
以上就是关于用java获得客户端的地理位置的实际操作代码分享了。如果你对java知识感兴趣,想要了解更多java程序代码例子,敬请关注奇Q工具网。
推荐阅读: