parent
52ba5a88fd
commit
41328f4795
3 changed files with 79 additions and 3 deletions
@ -0,0 +1,70 @@ |
||||
package com.xxl.job.core.util; |
||||
|
||||
import org.slf4j.Logger; |
||||
import org.slf4j.LoggerFactory; |
||||
|
||||
import java.io.IOException; |
||||
import java.net.ServerSocket; |
||||
|
||||
/** |
||||
* net util |
||||
* |
||||
* @author xuxueli 2017-11-29 17:00:25 |
||||
*/ |
||||
public class NetUtil { |
||||
private static Logger logger = LoggerFactory.getLogger(NetUtil.class); |
||||
|
||||
/** |
||||
* find avaliable port |
||||
* |
||||
* @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."); |
||||
} |
||||
|
||||
/** |
||||
* check port used |
||||
* |
||||
* @param port |
||||
* @return |
||||
*/ |
||||
public static boolean isPortUsed(int port) { |
||||
boolean used = false; |
||||
ServerSocket serverSocket = null; |
||||
try { |
||||
serverSocket = new ServerSocket(port); |
||||
used = false; |
||||
} catch (IOException e) { |
||||
logger.info(">>>>>>>>>>> xxl-job, port[{}] is in use.", port); |
||||
used = true; |
||||
} finally { |
||||
if (serverSocket != null) { |
||||
try { |
||||
serverSocket.close(); |
||||
} catch (IOException e) { |
||||
logger.info(""); |
||||
} |
||||
} |
||||
} |
||||
return used; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue