【java】ping IP和IP加端口
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 }