使用java写一个一直接收udp消息的线程
时间: 2024-03-09 19:46:06 浏览: 77
Java使用线程实现UDP收发程序
可以使用Java的`java.net`包中的`DatagramSocket`类来实现接收UDP消息的线程。以下是一个简单的示例代码:
```
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpReceiverThread extends Thread {
private DatagramSocket socket;
private boolean running;
private byte[] buffer = new byte[1024];
public UdpReceiverThread(int port) throws SocketException {
socket = new DatagramSocket(port);
}
@Override
public void run() {
running = true;
while (running) {
DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
try {
socket.receive(packet);
String message = new String(packet.getData(), 0, packet.getLength());
System.out.println("Received message: " + message);
} catch (IOException e) {
e.printStackTrace();
running = false;
}
}
socket.close();
}
public void stopReceiver() {
running = false;
}
}
```
上述代码中,`UdpReceiverThread`继承了`Thread`类,重写了`run()`方法。在`UdpReceiverThread`的构造函数中,创建了一个`DatagramSocket`对象,并指定了要接收的UDP消息的端口号。在`run()`方法中,通过`socket.receive(packet)`方法一直阻塞等待接收UDP消息。当接收到UDP消息后,通过`packet.getData()`方法获取消息内容,并打印出来。如果发生异常,设置`running`变量为`false`,退出循环并关闭`socket`。最后,提供了一个`stopReceiver()`方法,用于停止接收UDP消息。
阅读全文