【java】ping IP和IP加端口

时间:2024-03-05 13:16:05

 

  1 /**
  2  * ping ip
  3  *
  4  * @param ip
  5  * @return
  6  */
  7 public static boolean pingIp(String ip) {
  8     if (null == ip || 0 == ip.length()) {
  9         return false;
 10     }
 11     try {
 12         InetAddress.getByName(ip);
 13         return true;
 14     } catch (IOException e) {
 15         return false;
 16     }
 17 }
 18 
 19 /**
 20  * ping ip加端口
 21  *
 22  * @param ip
 23  * @param port
 24  * @return
 25  */
 26 public static boolean pingIpAndPort(String ip, String port) {
 27     if (null == ip || 0 == ip.length() || null == port || 0 == port.length() || !isInt(port) || !isRangeInt(port, 1024, 65535)) {
 28         return false;
 29     }
 30     return pingIpAndPort(ip, Integer.parseInt(port));
 31 }
 32 
 33 /**
 34  * ping ip加端口
 35  *
 36  * @param ip
 37  * @param port
 38  * @return
 39  */
 40 public static boolean pingIpAndPort(String ip, int port) {
 41     if (null == ip || 0 == ip.length() || port < 1024 || port > 65535) {
 42         return false;
 43     }
 44     if (!pingIp(ip)) {
 45         return false;
 46     }
 47     Socket s = new Socket();
 48     try {
 49         SocketAddress add = new InetSocketAddress(ip, port);
 50         s.connect(add, 3000);// 超时3秒
 51         return true;
 52     } catch (IOException e) {
 53         return false;
 54     } finally {
 55         try {
 56             s.close();
 57         } catch (Exception e) {
 58         }
 59     }
 60 }
 61 
 62 /**
 63  * 判断是否是整数
 64  *
 65  * @param str
 66  * @return
 67  */
 68 public static boolean isInt(String str) {
 69     if (!isNumeric(str)) {
 70         return false;
 71     }
 72     // 该正则表达式可以匹配所有的数字 包括负数
 73     Pattern pattern = Pattern.compile("[0-9]+");
 74 
 75     Matcher isNum = pattern.matcher(str); // matcher是全匹配
 76     if (!isNum.matches()) {
 77         return false;
 78     }
 79     return true;
 80 }
 81 
 82 /**
 83  * 匹配是否包含数字
 84  *
 85  * @param str
 86  * @return
 87  */
 88 public static boolean isNumeric(String str) {
 89     if (null == str || 0 == str.length()) {
 90         return false;
 91     }
 92     if (str.endsWith(".")) {
 93         return false;
 94     }
 95     // 该正则表达式可以匹配所有的数字 包括负数
 96     Pattern pattern = Pattern.compile("-?[0-9]+\\.?[0-9]*");
 97 
 98     Matcher isNum = pattern.matcher(str); // matcher是全匹配
 99     if (!isNum.matches()) {
100         return false;
101     }
102 
103     return true;
104 }
105 
106 /**
107  * 是否在范围内
108  *
109  * @param str
110  * @param start
111  * @param end
112  * @return
113  */
114 public static boolean isRangeInt(String str, int start, int end) {
115     if (!isInt(str)) {
116         return false;
117     }
118     int i = Integer.parseInt(str);
119     return i > start && i < end;
120 }