一、简介
使用的是java自带的Socket类进行检测端口号是否可用,两个代码,一个是检测的工具类,另一个是调用工具类传递相关的的参数;
请求的结果:(当前Ip可用,端口号不可用)
二、检测用的工具类
代码语言:javascript复制import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
public class Iputils {
private static final Logger logger = LogManager.getLogger(WordSmsController.class);
/**
* 检测Ip和端口是否可用
*
* @param ip
* @param port
* @return
*/
public static boolean checkIpPort(String ip, int port) {
Socket socket = new Socket();
try {
socket.connect(new InetSocketAddress(ip,port),3000);
logger.info("地址和端口号可用");
return true;
} catch (Exception e) {
logger.info("地址和端口号不可用");
return false;
} finally {
if (socket != null) {
try {
socket.close();
} catch (IOException e) {
}
}
}
}
/**
* 检测Ip地址
*
* @param ip
* @return
*/
public static boolean checkIp(String ip){
try {
InetAddress.getByName(ip).isReachable(3000);
logger.info("Ip可以使用");
return true;
} catch (IOException e) {
logger.info("Ip不可用");
return false;
}
}
}
三、测试类
代码语言:javascript复制// 查看端口号是否可用
String ip = "106.12.58.180";
int port = 80;
Iputils iputils = new Iputils();
// 检测Ip是否可用
boolean resultIp = iputils.checkIp(ip);
System.out.print("检测的Ip结果为:");
System.out.println(resultIp);
// 检测Ip和端口号是否可用
boolean resultIpPort = iputils.checkIpPort(ip, port);
System.out.print("检测的Ip和端口结果为:");
System.out.println(resultIpPort);