UDP消息发送

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();


    }
}

posted @ 2021-07-15 16:59  卡卡发  阅读(192)  评论(0)    收藏  举报