• UDP


    UDP
    将数据及源和目的封装成数据包中,不需要建立连接。
    每个数据报的大小在限制在64k内。
    因无连接,是不可靠协议。
    不需要建立连接,速度快。
    应用案例:QQ、FeiQ聊天、在线视频用的都是UDP传输协议。

    UDP传输
    DatagramSocket(用来发送和接收数据报包的套接字)与DatagramPacket(数据报包)。
    建立发送端,接收端。
    建立数据包。
    调用Socket的发送接收方法。
    关闭Socket。
    发送端与接收端是两个独立的运行程序

    发送端

    package net;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    
    public class UDPSendDemo {
    
        
        public static void main(String[] args) throws IOException {
            
            System.out.println("发送端启动");
            
            // udpsocket服务。使用DatagramSocket对象
            DatagramSocket ds= new DatagramSocket(10086);
            
            byte[] buf ="我爱学java".getBytes();
            
            // 将要发送的数据封装到数据包中,指定发送ip和端口
            DatagramPacket dp =new DatagramPacket(buf,buf.length,InetAddress.getByName("127.0.0.1"),9000);
            
            // 通过udp的socket服务将数据包发送出去,使用send方法。
            ds.send(dp);
            //关闭资源
            ds.close();
            
    
        }
    
    }

    接受端

    package net;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    public class UDPReceiveDemo {
    
        
        public static void main(String[] args) throws IOException {
            
            System.out.println("服务端启动");
            // 创建数据包
            DatagramSocket ds =new DatagramSocket(9000);
            byte[] buf =new byte[1024];
            DatagramPacket dp= new DatagramPacket(buf, buf.length);
            
            //将接收到数据放到数据包中
            ds.receive(dp);
            
            //获取数据
            String ip =dp.getAddress().getHostName();
            int port =dp.getPort();
            String text=new String(dp.getData(),0,dp.getLength());
            System.out.println(ip+"-"+port+"+"+text);
            
            //关闭资源
            ds.close();
    
        }
    
    }

    由于UDP协议传输数据,只管发送数据,而不管接收端是否能够接收到数据。因此,应该首先启动接
    收端程序,再启动发送端程序

    最后服务端output:

    服务端启动
    127.0.0.1-10086+我爱学java

  • 相关阅读:
    HDU 6040 Hints of sd0061 —— 2017 Multi-University Training 1
    HDU 6038 Function —— 2017 Multi-University Training 1
    HDU 6034 Balala Power! —— Multi-University Training 1
    使用python将excel数据导入数据库
    python reload(sys)找不到,name 'reload' is not defined
    伯乐在线资讯URL
    伯乐在线文章URL
    慕课网python分布式爬虫打造搜索引擎视频中爬取伯乐网文章
    javascript HTML DOM 简单介绍
    css样式大全
  • 原文地址:https://www.cnblogs.com/xurui1995/p/5299096.html
Copyright © 2020-2023  润新知