java socket监听多个端口
时间: 2023-12-13 13:05:39 浏览: 71
在 Java 中,可以通过创建多个 ServerSocket 实例来监听多个端口。具体步骤如下:
1. 创建多个 ServerSocket 实例,每个实例绑定不同的端口号;
2. 对每个 ServerSocket 实例调用 accept() 方法,等待客户端连接;
3. 当某个 ServerSocket 实例接收到客户端连接时,创建一个新的线程来处理该连接。
以下是一个简单的示例代码,演示如何同时监听 2 个端口:
```
public class MultiPortServer {
private static final int PORT1 = 8080;
private static final int PORT2 = 8081;
public static void main(String[] args) throws IOException {
ServerSocket serverSocket1 = new ServerSocket(PORT1);
ServerSocket serverSocket2 = new ServerSocket(PORT2);
while (true) {
Socket socket1 = null, socket2 = null;
try {
socket1 = serverSocket1.accept();
System.out.println("Connection established on port " + PORT1);
socket2 = serverSocket2.accept();
System.out.println("Connection established on port " + PORT2);
new Thread(new ConnectionHandler(socket1)).start();
new Thread(new ConnectionHandler(socket2)).start();
} catch (IOException e) {
// handle exception
}
}
}
}
class ConnectionHandler implements Runnable {
private Socket socket;
public ConnectionHandler(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
// handle connection
}
}
```
在上述代码中,创建了两个 ServerSocket 实例分别绑定在 8080 和 8081 端口上,然后在一个循环中分别调用两个 ServerSocket 的 accept() 方法等待客户端连接。当某个 ServerSocket 接收到连接时,会创建一个新的线程来处理该连接,新线程的参数为对应的 Socket 实例。由于线程是并发执行的,因此可以同时处理多个连接。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)