Java网络编程,代码正确,控制台不显示接收的结果,但调试模式下又显示,请热心人帮忙解答,谢谢。

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
//发送程序
public class UDPSend {

    public static void main(String[] args) throws IOException {
        //给本机发送消息
        InetAddress inet = InetAddress.getByName("127.0.0.1");
        byte[] data = "你好UDP".getBytes();
        DatagramPacket packet = new DatagramPacket(data, data.length, inet, 10000);
        DatagramSocket socket = new DatagramSocket();
        socket.send(packet);
        socket.close();
    }
} 

//接收程序

 import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPReceive {

    public static void main(String[] args) throws IOException {
        byte[] data = new byte[1024];
        //通过10000端口号接收数据
        DatagramSocket socket = new DatagramSocket(10000);
        DatagramPacket packet = new DatagramPacket(data, data.length);
        socket.receive(packet);
        int length = packet.getLength();
        //打印从UDPSend接收的数据
        System.out.println(new String(data,0,length));
        socket.close();
    }
}

问题是控制台不显示任何东西,但调试模式会显示"你好UDP。为什么?

复制你代码在我ide里运行可以显示收到的文字,你在什么ide里运行的?注意要先启动UDPReceive再启动UDPSend

可能是你启动的时候问题,先启动接收方,再开启发送方,这样试试。代码没有问题。

应该是执行顺序的问题, 可以改成循环发送 应该是能看到打印的

启动顺序不对,先启动接收,再开启发送就可以了。

调试模式有东西显示,是因为调试时,在此处有断点,可以查看内容,这说明你的程序是没问题的。而正常运行时,输出之后界面一闪就关啦,你也就看不到啦,最后的办法,在输出后面,再加一条读取字符的命名,就可看到输出的内容啦。
加入读字符如char c = new java.util.Scanner(System.in).next().charAt(0);

先启动server,再启动client

首先呢,要复制你代码在我ide里运行可以显示收到的文字,然后看看你在什么ide里运行的?一定注意要先启动UDPReceive再启动UDPSend

可能是你启动顺序有问题,应该是先启动Sever,再启动Client;如果先启动Client,肯定由于服务器端没连接而没有效果。