Socket使用的tcp连接,需要先连接之后才能发送数据。
DatagramSocket使用的UDP连接,客户端不需要先连接数据,可以直接发送给指定服务端。
发送端:
package inet;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
//不需要连接服务器
public class UDPDemo1 {
    public static void main(String[] args) throws Exception {
        //建立一个socket
        DatagramSocket dgs=new DatagramSocket();
        //建立一个包
        String msg="hello,server!";
        //发送给谁
        InetAddress ad = InetAddress.getByName("localhost");
        int port=9090;
        //数据,数据的长度起始,连接对象地址,端口
        DatagramPacket datagramPacket = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,ad,port);
        //发送包
        dgs.send(datagramPacket);
        //关闭流
        dgs.close();
    }
}
接收端:
package inet;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPDemo2 {
    public static void main(String[] args) throws Exception {
        //开放端口
        DatagramSocket socket=new DatagramSocket(9090);
        //接收数据包
        byte[] buffer = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length);
        socket.receive(packet);//阻塞接收,一直在监听等待
        System.out.println(packet.getAddress().getHostAddress());
        System.out.println(new String(packet.getData(),0,packet.getLength()));
        //关闭连接
        socket.close();
    }
}