1. 前言
在通过程序来启动一个进程时,我们可能会预设一个IP和启动端口。但是呢,人为设定的端口不一定是一个可用的端口,所以需要利用程序来判断,目的是要申请到一个有效的端口来启动服务,以及获取到本机的首个有效IP地址。
2.代码
2.1. 获取有效的端口
package com.**;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.net.ServerSocket;
/**
*
*/
public class NetUtil {
private static Logger logger = LoggerFactory.getLogger(NetUtil.class);
/**
* 寻找有效的端口
*
* @param defaultPort
* @return
*/
public static int findAvailablePort(int defaultPort) {
int portTmp = defaultPort;
while (portTmp < 65535) {
// 如果端口没有被占用
if (!isPortUsed(portTmp)) {
return portTmp;
} else {
// 如果端口被占用了
portTmp++;
}
}
portTmp = defaultPort--;
while (portTmp > 0) {
if (!isPortUsed(portTmp)) {
return portTmp;
} else {
portTmp--;
}
}
throw new IllegalStateException("no available port.");
}
/**
* 检查端口是否被占用
* 这个防范可以记来
* @param port
* @return
*/
public static boolean isPortUsed(int port) {
boolean used = false;
ServerSocket serverSocket