DatagramSocket如何做到每次都收包不卡顿

How does DatagramSocket receive packet everytime and does not stuck

我创建了一个 DatagramSocket。 当我在等待数据包时,在收到数据包之前我无法做任何事情。 如果我想做点什么,比如在等包的时候打印点什么。 我该怎么做?

这是我的代码。

private DatagramSocket socket = new DatagramSocket(8080);
private DatagramPacket packet = new DatagramPacket();
bool b = true;
int x = 0;

do {
  socket.receive(packet);
  //if I receive a packet, print the payload of the packet
  System.out.println(x);
  x++;
} while (b);

我想继续打印 "x"。如果我收到一个数据包,我将打印数据包的有效负载。

我可以把接收功能放在后台吗?当我收到包裹时,我会立即打印它。

对于这种情况,您可以使用线程。您正在将主线程置于无限循环中,这样您就无法在循环之外做任何事情。如果你再创建一个线程并用它来接收数据包,那么你的主线程可以做其他工作。