关于UDP协议

UDP协议的特点。

1.UDP是一个无连接协议,传输数据之前接收端和发送端之间不建立连接。

想传输数据的时候就抓取数据扔出去,不监控是否被正确和全面的接受到。

2.因为不需要建立连接,也就不需要维护连接状态,会因此一台发送机器可以向多台接收机器传输相同的信息,只需要管理IP和接口。

3.UDP具有较好的实时性,效率高。原因在于UDP在传输数据的时候不建立逻辑连接,也不想TCP那样对数据进行检查。

 

UDP的使用场景

网络游戏,视频聊天和语音聊天类对实时性要求比较强的应用软件。

例如:在聊天的过程中如果出现丢包现象的话,充其量觉得有些卡顿,一般情况下要求对方从复一遍既可,不影响聊天的整体效果。

并且网络状况较好的时候,这种情况很少发生。

public class Client_Udp {

    public static void main(String[] args) throws Exception {
        System.out.println("数据准备发送中");
        //1、使用DatagramScoket 指定端口 创建发送端
        DatagramSocket dgs =new DatagramSocket(8888);
        
        //2、准备数据一定转成字节数组
        String data="数据传输成功";
        byte[] datas=data.getBytes();
        
        //3、封装成DatagraPacket包裹,需要指定目的地
        DatagramPacket dgp =new DatagramPacket(datas, 0, datas.length, new InetSocketAddress("localhost",9999));
        
        //4、发送包裹Send()
        dgs.send(dgp);

        dgs.close();
    }

 

public class Server_Udp {

    public static void main(String[] args) throws Exception {
        System.out.println("数据接收中!");
        
        //1.使用DatagramSocket创建端口,指定接收端。
        DatagramSocket dgs=new DatagramSocket(9999);
        
        //2.准备容器封装成DatagramPacket包裹
        byte[] container =new byte[1024*60];
        DatagramPacket dgp =new DatagramPacket(container, 0,container.length);
        
        //3.阻塞式接受包裹receive
        dgs.receive(dgp);
        
        //4.分析数据
        byte[] data=dgp.getData();
        String st=new String(data,0,data.length);
        System.out.println(st);
        
        dgs.close();
posted @ 2019-07-14 15:08  HappyBeibei  阅读(513)  评论(0编辑  收藏  举报