帮我用java写一段简单的Socket随时接收消息和报文代码
时间: 2024-03-05 16:49:42 浏览: 143
一个简单的java socket程序
好的,以下是一个简单的Java Socket程序,用于随时接收消息和报文:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8080); // 创建ServerSocket对象,监听8080端口
System.out.println("Server listening on port 8080...");
while (true) { // 循环等待客户端连接
Socket clientSocket = serverSocket.accept(); // 接受客户端连接
System.out.println("Client connected: " + clientSocket.getInetAddress().getHostName());
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 读取客户端发送的数据
String inputLine;
while ((inputLine = in.readLine()) != null) { // 循环读取数据
System.out.println("Received message: " + inputLine);
}
in.close(); // 关闭输入流
clientSocket.close(); // 关闭客户端连接
}
}
}
```
这个程序会监听8080端口,等待客户端连接,并读取客户端发送的数据。当有数据到达时,程序会输出接收到的数据。
如果你想同时处理多个客户端连接,可以在循环中使用多线程来处理。每当有新的客户端连接到达时,就创建一个新的线程来处理。以下是一个使用多线程处理多个客户端连接的示例代码:
```java
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class SocketServer {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8080); // 创建ServerSocket对象,监听8080端口
System.out.println("Server listening on port 8080...");
while (true) { // 循环等待客户端连接
Socket clientSocket = serverSocket.accept(); // 接受客户端连接
System.out.println("Client connected: " + clientSocket.getInetAddress().getHostName());
// 创建新的线程来处理客户端连接
Thread thread = new Thread(() -> {
try {
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); // 读取客户端发送的数据
String inputLine;
while ((inputLine = in.readLine()) != null) { // 循环读取数据
System.out.println("Received message: " + inputLine);
}
in.close(); // 关闭输入流
clientSocket.close(); // 关闭客户端连接
} catch (Exception e) {
e.printStackTrace();
}
});
thread.start(); // 启动新线程
}
}
}
```
这样可以同时处理多个客户端连接,每个连接都运行在独立的线程中。
阅读全文