• UDP通信


    接收端不需要明确知道数据的来源,只需要接收到数据即可

    发送数据时必须指定接收端的IP地址和端口号,就好像发送货物的集装箱上面必须标明接收人的地址一样

    * 发送端

     * 1,创建DatagramPacket对象,封装数据,接收的地址和端口

     * 2,创建DatagramSocket对象

    * 3,调用DatagramSocket中的send方法,发送数据包

     * 4,关闭资源DatagramSocket

    package com.oracle.demo01;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.security.spec.DSAGenParameterSpec;
    import java.util.Scanner;
    
    public class UDPSend {
    
    	public static void main(String[] args) throws IOException {
    		Scanner sc=new Scanner(System.in);
    		//封装ip地址
    		InetAddress inet=InetAddress.getByName("127.0.0.1");
    		//创建快递公司对象
    		DatagramSocket ds=new DatagramSocket();
    		while (true) {
    			
    		//创建打包对象,封装要发送的数据、接收端的ip地址极端口号
    		//封装数据
    		
    		byte[]bytes=sc.next().getBytes();
    		
    		DatagramPacket dp=new DatagramPacket(bytes,bytes.length,inet,8888);
    		
    		//发送数据
    		ds.send(dp);
    		//释放资源
    		//ds.close();
    
    	}
    	}
    }
    

      

    UDP接收端

     *

     * 1,创建DatagramSocket对象,绑定端口号(要和发送端端口号一致)

     * 2,创建字节数组,接收发来的数据

     * 3,创建数据包对象DatagramPacket

     * 4,调用DatagramSocket对象方法receive(DatagramPacket dp)接收数据,数据放在数据包中

     * 5,拆包

          发送的IP地址

              数据包对象DatagramPacket方法getAddress()获取的是发送端的IP地址对象

              返回值是InetAddress对象

          接收到的字节个数

              数据包对象DatagramPacket方法getLength()

          发送方的端口号

              数据包对象DatagramPacket方法getPort()发送端口

     * 6,关闭资源

    package com.oracle.demo01;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.SocketException;
    
    public class UDPRecieve {
    	// UDP接收端
    	public static void main(String[] args) throws IOException {
    		// 创建快递公司,名确端口号
    		DatagramSocket ds = new DatagramSocket(8888);
    		// 创建字节数组来接收数据
    		byte bytes[] = new byte[1024];
    		
    		while (true) {
    			// 创建打包对象,接收包
    			DatagramPacket dp = new DatagramPacket(bytes, bytes.length);
    			// 接收数据包
    			ds.receive(dp);
    			// 拆包
    			// 获取字节长度
    			int length = dp.getLength();
    			// 获取发送端ip地址
    			String ip = dp.getAddress().getHostAddress();
    			// 获取端口号
    			int port = dp.getPort();
    			System.out.println("ip地址为:" + ip + "	端口号为" + port + "	得人发送的内容为" + new String(bytes, 0, length));
    			// 释放资源
    			// ds.close();
    		}
    	}
    
    }
    

      

  • 相关阅读:
    网易数帆实时数据湖 Arctic 的探索和实践
    私有化场景下大规模云原生应用的交付实践
    Apache Kyuubi 在 T3 出行的深度实践
    Win7 32位原版镜像无法安装VMware Tools
    VB.NET代码转C#的方法
    ArcGIS Pro导入OSGB倾斜摄影数据
    基于倾斜摄影测量的三维建模实验
    解决QTTabBar标签不能置顶的问题
    GIS中图斑椭球面积的计算
    ISaveAs导出栅格显示异常
  • 原文地址:https://www.cnblogs.com/zqy6666/p/12325012.html
Copyright © 2020-2023  润新知