• 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();
        }
    
    }
  • 相关阅读:
    MySQL-第十四篇事务管理
    MySQL-第十三篇使用ResultSetMetaData分析结果集
    MySQL-第十二篇管理结果集
    MySQL-第十一篇JDBC典型用法
    MySQL-第十篇多表连接查询
    Java中List集合去除重复数据的方法1
    去除List集合中的重复值(四种好用的方法)(基本数据类型可用)
    去除list集合中重复项的几种方法
    Java中List集合去除重复数据的四种方法
    Java中List集合去除重复数据的方法
  • 原文地址:https://www.cnblogs.com/SasaL/p/10304239.html
Copyright © 2020-2023  润新知