java 网络编(二)UDP的传输

发送端:

package cn.sasa.netDemo1;

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

public class SendDemo {

    public static void main(String[] args) throws IOException {
        /**
         * DatagramPacket 数据报包,用于封装数据
         * 
         * DatagramSoket 用于数据传输
         * 
         * 两者都用于发送和接收
         */
        
        //实现UDP的发送
        //1、创建DatagramPacket对象,封装数据、接收的地址和端口
        //2、创建DatagramSocket
        //3、调用DatagramSocket的send方法发送数据
        //4、关闭资源,关闭DatagramSocket
        //
        byte[] buff = "hello".getBytes();
        InetAddress host = InetAddress.getByName("127.0.0.1");
        DatagramPacket packet = new DatagramPacket(buff, buff.length, host, 8046);
        
        DatagramSocket socket = new DatagramSocket();//发送使用空参构造函数
        socket.send(packet);//调用send
        socket.close();
    }

}

接收端:

package cn.sasa.netDemo1;

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

public class ReceiveDemo {

    public static void main(String[] args) throws IOException {
        /**
         * UDP的接收端
         * 
         * DatagramPacket 封装数据包,接收数据
         * 
         * DatagramSocket 实现数据传输
         * 
         * 接收步骤:
         * 1、创建DatagramSocket,绑定端口号,与发送端的端口号保持一致
         * 2、创建字节数组,接收数据
         * 3、创建DatagramPacket
         * 4、调用DatagramSocket的receive(DatagramPacket p)
         * 接收数据放在数据包
         * 5、拆包
         *         发送端IP
         *         接收到的字节长度
         *         发送端端口号
         * 6、关闭资源
         * 
         */
        //DatagramPacket
        DatagramSocket socket = new DatagramSocket(8046);
        byte[] buff = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buff, buff.length);
        socket.receive(packet);
        int length = packet.getLength();//接收的字节长度
        System.out.println(new String(buff,0,length));
        System.out.println(packet.getAddress().getHostAddress()); //打印发送端IP地址
        System.out.println(packet.getPort());
        socket.close();
    }

}

猜你喜欢

转载自www.cnblogs.com/SasaL/p/10304239.html