03_udp发送接收

package com.baidu.socket;

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

/**
 * 发送端
 */
public class SendSocket {
    public static void main(String[] args) {
        //1.创建发送端套接字对象
        DatagramSocket ds=null;
        try {
            ds=new DatagramSocket();
            //2.1发送的数据
            byte[] buf="hello server".getBytes();
            //2.2发送的数据长度
            int length=buf.length;
            //2.3拟发送主机地址
            InetAddress address=InetAddress.getByName("127.0.0.1");
            //2.4拟发送主机端口号
            int port=9999;
            //2.DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
            DatagramPacket p=new DatagramPacket(buf,length,address,port);
            //oid send(DatagramPacket p) 从此套接字发送数据报包。 
            ds.send(p);
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            //关闭资源
            ds.close();
        }

    }
}

//========================================
package com.baidu.socket;

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

/**
 * 接收端
 */
public class ReceiveSocket {
    public static void main(String[] args) {
        //1.创建接收端套接字
        DatagramSocket ds=null;
        try {
            ds=new DatagramSocket(9999);
            //2.1创建字节数组来接收数据
            byte[] buf=new byte[1024];
            //2.2接收的字节长度
            int length=buf.length;
            //2.创建数据数据报包对象DatagramPacket(byte[] buf, int length) 构造 DatagramPacket,用来接收长度为 length 的数据包。
            DatagramPacket p=new DatagramPacket(buf,length);
            //3.接收数据
            ds.receive(p);

            //4.拆包
            //4.1获取发送端的地址
            String ip=p.getAddress().getHostAddress();
            //4.2获取发送端的端口号
            int port=p.getPort();
            //4.3获取发送端的数据
            byte[] data = p.getData();
            //String(byte[] bytes, int offset, int length) 通过使用平台的默认字符集解码指定的 byte 子数组,构造一个新的 String。
            String line=new String(data,0,data.length);
            System.out.println(ip+": "+port+"发来信息:"+line);
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            ds.close();
        }
    }
}

posted @ 2021-07-18 22:09  我是多多  阅读(72)  评论(0)    收藏  举报