java代码实现开启端口池并且端口号依次递增
时间: 2024-02-17 11:59:58 浏览: 19
以下是 Java 代码实现开启端口池并且端口号依次递增的示例:
```java
import java.net.ServerSocket;
import java.net.Socket;
public class PortPool {
private int startPort;
private int endPort;
private int currentPort;
public PortPool(int startPort, int endPort) {
this.startPort = startPort;
this.endPort = endPort;
this.currentPort = startPort;
}
public synchronized int getNextAvailablePort() throws Exception {
while (currentPort <= endPort) {
try {
ServerSocket serverSocket = new ServerSocket(currentPort);
serverSocket.setReuseAddress(true);
Socket socket = new Socket("localhost", currentPort);
serverSocket.close();
socket.close();
int availablePort = currentPort;
currentPort++;
return availablePort;
} catch (Exception e) {
currentPort++;
}
}
throw new Exception("No available port in range!");
}
public static void main(String[] args) throws Exception {
PortPool portPool = new PortPool(8000, 8010);
int port = portPool.getNextAvailablePort();
System.out.println("Available port: " + port);
}
}
```
这段代码首先定义了一个 `PortPool` 类,包含了起始端口号、结束端口号和当前端口号等属性,以及获取下一个可用端口的方法 `getNextAvailablePort`。在 `getNextAvailablePort` 方法中,使用一个循环不断尝试绑定当前端口号并尝试连接到本地主机,若连接成功则说明该端口可用,返回该端口号;否则继续尝试下一个端口号,直到超出了给定的端口号范围。
在 `main` 方法中,我们创建了一个 `PortPool` 对象,并调用 `getNextAvailablePort` 方法获取下一个可用端口号。