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

      UDP在java中主要使用DatagramSocket来实现通讯,数据一般是通过DatagramPacket来封装;

      发送方只需指定接受方的地址和端口,然后通过send()方法就可以把封装在DatagramPacket中数据发送过去!

      而接收方只需同样利用DatagramSocket和一个DatagramPacket来接收数据就可以了,接受只需指定接受端口就可以了,具体如下:

      发送方:

      

    package com.seven.exercise1;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UdpSend {
    
        
        public static void main(String[] args) throws Exception {
            
            //1.udp服务
            DatagramSocket ds = new DatagramSocket();
            
            //2.封装数据到DatagramPacket
            byte[] data = "hello udp socket".getBytes();
            
            InetAddress inetAddress = InetAddress.getByName("127.0.0.1");//地址.
            DatagramPacket datagramPacket = new DatagramPacket(data, data.length, inetAddress, 10000);
            
            //3.发送数据
            ds.send(datagramPacket);
            
            //4.关闭
            ds.close();
            
        }
    }

      接受方;

    package com.seven.exercise1;
    
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    public class UdpReceive {
        
        public static void main(String[] args) throws Exception{
            //1.新建接收方
            DatagramSocket datagramSocket = new DatagramSocket(10000);
            //2.绑定接收package
            byte[] b  = new byte[1024];
            DatagramPacket dp = new DatagramPacket(b,b.length);
            //3.接收数据
            datagramSocket.receive(dp);
            //4.接收到数据的话那就打印出来
            String data = new String(dp.getData(),0,dp.getLength());
            System.out.println(dp.getAddress().getHostAddress() +"----->"+ data);
            //5.关闭;
            datagramSocket.close();
            
        }
    
    }

      因为UDP是面向无连接的,所以无论怎么运行都可以,但是为了能够接受到数据,我们要把接受方先运行起来,再去运行发送方,这样才可以看出效果,不然的话数据包丢失也就看不出什么效果了==。

  • 相关阅读:
    Mysql之存储过程与存储函数
    mysql-bin日志自动清理及手动删除
    mysql下面的binlog
    mysql下的数据备份与恢复
    查询mysql数据库中各个表所占空间大小以及索引大小
    mysql执行sql语句报错this is incompatible with sql_mode=only_full_group_by
    docker WARNING: IPv4 forwarding is disabled. 解决方法
    Linux平台修改环境变量的方式
    PuTsangTo
    (一) 从Angular1到Angular2的杂谈
  • 原文地址:https://www.cnblogs.com/sevenlin/p/4652499.html
Copyright © 2011-2022 走看看