Java ip工具类
来源:互联网 发布:js 重新加载当前页面 编辑:程序博客网 时间:2024/05/16 02:16
1. 功能:
输入一个子网中的ip和子网掩码,可以获取:
- 起始ip
- 结束ip
- 子网中所有ip集合
2. 代码
import java.util.*;public class IpUtil { /** * 测试 * @param args */ public static void main(String[] args) { String ip = "10.10.2.23"; String netmask = "255.255.255.0"; System.out.println("子网中的一个ip是:" + ip + " ,子网掩码是: " + netmask ); //以0结尾的一般表示网络地址,255结尾的是广播地址, //我们用的IP地址是1~254结尾之间的,这儿不处理 String ipStartString = getStartIpOfSubnet(ip, netmask); String ipEndString = getEndIpOfSubnet(ip, netmask); System.out.println("起始ip是:" + ipStartString); System.out.println("结束ip是:" + ipEndString); for (String subnetIp : getIpSetOfSubnet(ip,netmask)){ System.out.println(subnetIp); } } /** * 获取网络中起始ip * @param ip 子网中的一个ip * @param netmask 子网掩码 * @return 起始ip */ public static String getStartIpOfSubnet(String ip, String netmask){ return getStartIpOfSubnet(ipToInt(ip), ipToInt(netmask)); } private static String getStartIpOfSubnet(int ip, int netmask){ return intToIP(ip & netmask); } /** * 获取网络中结束ip * @param ip 子网中的一个ip * @param netmask 子网掩码 * @return 结束ip */ public static String getEndIpOfSubnet(String ip, String netmask){ return getEndIpOfSubnet(ipToInt(ip), ipToInt(netmask)); } private static String getEndIpOfSubnet(int ip, int netmask){ return intToIP(ipToInt(getStartIpOfSubnet(ip,netmask)) + (~netmask)); } /** * 获取子网所有ip集合 * @param ip 子网中的一个ip * @param netmask 子网掩码 * @return 子网所有ip集合 */ public static Set<String> getIpSetOfSubnet(String ip, String netmask){ int startIp = ipToInt(getStartIpOfSubnet(ip, netmask)); int endIp = ipToInt(getEndIpOfSubnet(ip, netmask)); Set<String> ipSet = new LinkedHashSet<String>(); for (int i = startIp; i <= endIp; i++){ ipSet.add(intToIP(i)); } return ipSet; } /** * ip字符串转整数 * @param strIP ip字符串形式 * @return ip整数形式 */ public static int ipToInt(String strIP) { int[] ip = new int[4]; String[] ipSec = strIP.split("\\."); for (int k = 0; k < 4; k++) { ip[k] = Integer.valueOf(ipSec[k]); } return (ip[0] << 24) + (ip[1] << 16) + (ip[2] << 8) + ip[3]; } /** * ip整数转字符串 * @param intIP ip整数形式 * @return ip字符串形式 */ public static String intToIP(int intIP) { StringBuffer sb = new StringBuffer(""); sb.append(String.valueOf(intIP >>> 24)); sb.append("."); sb.append(String.valueOf((intIP & 0x00FFFFFF) >>> 16)); sb.append("."); sb.append(String.valueOf((intIP & 0x0000FFFF) >>> 8)); sb.append("."); sb.append(String.valueOf(intIP & 0x000000FF)); return sb.toString(); }}
阅读全文
0 0
- Java ip工具类
- java处理ip的工具类
- java查询客户端IP工具类
- Java基础之java处理ip的工具类
- java ping ip工具优化
- java-IP处理,路径工具
- IP工具类
- IP解析工具类
- PING ip 工具类
- ip获取工具类
- IPUtil工具类,java 获取IP所属地
- java 获取本机ip地址工具类
- java代码ping服务IP工具类(Windows,Linux环境)
- JAVA获取IP地址和本机IP地址的工具类
- JAVA工具类(6)---IPUtil工具类(获取window与linux的本地ip及客户端ip)
- Java的IP地址分析工具
- ip处理工具类IPUtil
- IP工具类v1.0
- codeforces 864E Fire
- Java面向对象之封装
- 栈、队列、向量
- 智能指针
- 在IDEA中编辑struts国际化properties文件
- Java ip工具类
- Ajax 之 (二)JSON、无刷新表单信息提交、ajax聊天室、天气预报设置
- 流形学习-Manifold Learning
- git reset命令
- Android总结篇系列:Android广播机制
- 学习笔记之面向对象编程27(GUI之Frame)
- Dubbo常见问题总结
- [LeetCode-Algorithms-6] "ZigZag Conversion" (2017.9.28-WEEK4)
- dirty_ratio与dirty_background_ratio的区别