java实现socket监听两个端口收到的消息
时间: 2023-11-13 14:06:17 浏览: 75
可以使用Java的Socket类和ServerSocket类来实现监听两个端口收到的消息。以下是一个简单的示例代码:
```java
import java.net.ServerSocket;
import java.net.Socket;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class SocketListener {
public static void main(String[] args) {
int port1 = 8888;
int port2 = 9999;
try {
ServerSocket serverSocket1 = new ServerSocket(port1);
ServerSocket serverSocket2 = new ServerSocket(port2);
while (true) {
Socket socket1 = serverSocket1.accept();
Socket socket2 = serverSocket2.accept();
// 创建线程处理消息
new Thread(() -> {
try {
BufferedReader reader1 = new BufferedReader(new InputStreamReader(socket1.getInputStream()));
BufferedReader reader2 = new BufferedReader(new InputStreamReader(socket2.getInputStream()));
String message1 = reader1.readLine();
String message2 = reader2.readLine();
// 处理收到的消息
System.out.println("收到端口 " + port1 + " 的消息:" + message1);
System.out.println("收到端口 " + port2 + " 的消息:" + message2);
socket1.close();
socket2.close();
} catch (Exception e) {
e.printStackTrace();
}
}).start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们创建了两个ServerSocket对象分别监听端口8888和9999。然后,在一个无限循环中,我们使用accept()方法等待客户端的连接。一旦连接建立,我们创建一个新的线程来处理收到的消息。
在线程中,我们使用BufferedReader类从两个Socket对象的输入流中读取数据。然后,我们处理这些数据并输出到控制台。最后,我们关闭两个Socket对象。
当有多个客户端同时连接时,每个客户端都会创建一个新的线程处理消息。因此,我们可以同时监听多个端口并处理多个客户端的消息。
阅读全文