zoukankan      html  css  js  c++  java
  • 网络编程(2)—UDP

    1.UDP协议:

    • 将数据、源、目的封装成数据包,不需要建立连接
    • 每个数据包大小在64K一下
    • 因无需建立连接,所以是不可靠的
    • 发送完毕,无需释放资源,速度快

    2.UDP编程步骤:

    • 发送端:
    • 1.创建发送端对象(new DatagramSocket())
    • 2.准备要发送的数据,创建一个字符串转化为字节数组
    • 3.创建数据报对象(DatagramPacket pack = new DatagramPacket(b,0,b.length,
    • InetAddress.getByName(“127.0.0.1”),9090);)
    • 4.发送端对象.调用send()函数发送数据报
    • 5.关闭连接资源
    • 接收端:
    • 1.创建接收端对象(DatagramSocket(9090))
    • 2.同样的创建一个数据报(new DatagramPacket(b ,0 ,b.length))
    • 3.接收端对象.调用receive()函数,使用数据报接受数据
    • 4.写入到字符串中
    • 5.输出字符串
    • 6.关闭连接资源

    3.实例:

    public class TestUDP {
    
        //发送端
        @Test
        public void send(){
            //1.UDPSoclet对象
            DatagramSocket ds = null;
            try {
                ds = new DatagramSocket();
                //2.要发送的数据
                byte[] b = "我是要发送的数据".getBytes();
                //3.创建数据报:每个数据报不能大于64K,其中记录着数据信息、发送端的IP、端口号以及接受端的IP和端口号
                DatagramPacket pack = new DatagramPacket(b,0,b.length,
                        InetAddress.getByName("127.0.0.1"),9090);
                //4.发送
                ds.send(pack);
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(ds != null){
                    //关闭资源
                    ds.close();
                }
            }
        }
        //接收端
        @Test
        public void receive(){
            //1.接收端对象
            DatagramSocket ds = null;
            try {
                ds = new DatagramSocket(9090);
                byte[] b = new byte[1024];
                //2.通过数据报接受数据
                DatagramPacket pack = new DatagramPacket(b ,0 ,b.length);
                //3.接收
                ds.receive(pack);
                //4.写入到字符串中
                String str = new String(pack.getData(), 0, pack.getLength());
                //5.输出字符串
                System.out.println(str);
            } catch (SocketException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                if(ds != null){
                    //关闭资源
                    ds.close();
                }
            }
        }
    }
    
  • 相关阅读:
    virtualbox+vagrant学习-2(command cli)-9-vagrant Plugin命令
    virtualbox+vagrant学习-2(command cli)-15-vagrant resume命令
    virtualbox+vagrant学习-2(command cli)-14-vagrant reload命令
    virtualbox+vagrant学习-2(command cli)-12-vagrant Provision命令
    virtualbox+vagrant学习-2(command cli)-11-vagrant PowerShell命令
    java设计模式之单例
    java设计模式之策略
    java设计模式之组合
    设计模式之适配器
    java设计模式之模板方法
  • 原文地址:https://www.cnblogs.com/tengpengfei/p/10454030.html
Copyright © 2011-2022 走看看