JAVA11_25学习总结(Properties,UDP)

今日内容

1. Properties

Properties
    表示一组持久的属性
        属性列表中的每个键及其对应的值都是一个字符串
        继承Hashtable---->实现Map接口---->存储数据,取出数据----都可以使用Map的方式
    构造方法
        public Properties()
            ---创建空的属性列表
    遍历方式---底层基于Map实现的
    添加元素
        public Object setProperty(String key, String value)
    遍历属性列表
        public Set<String> stringPropertyNames()
            ---获取属性列表中的所有的键
        public String getProperty(String key)
            ---使用此属性列表中指定的键搜索属性
    public void load(Reader reader)throws IOException :
    
    将指定文件中的内容加载属性集合列表中(内容键值对 key=value)
        void store(Writer writer, String comments)
            ---将属性列表中的内容保存指定文件中(以"键=值"元素对进行保存)
               --第一个参数:字符输出/使用字节输出流
               --第二个参数:属性列表的描述
import java.util.Properties;
import java.util.Set;
​
public class Demo {
    public static void main(String[] args) {
​
        //public Properties():创建空的属性列表
        Properties prop = new Properties() ;
​
        //使用Map的方式添加数据
        prop.put("钟离","35") ;
        prop.put("胡桃","30") ;
​
        System.out.println(prop);
​
        //遍历
        Set<String> keySet = prop.stringPropertyNames();
        for(String key:keySet){
            String value = prop.getProperty(key);
            System.out.println(key+"="+value);
        }
    }
}

2. InetAddress

InetAddress
    代表互联网ip地址对象
    获取计算机的主机名称或者获取计算机的ip地址字符串形式
        public static InetAddress getByName(String host)throws UnknownHostException
                通过计算机主机名称或者是字符串形式的ip地址--->获取互联网ip地址对象
public class Test {
    public static void main(String[] args) throws UnknownHostException {
​
        //还可以指定ip地址字符串
        InetAddress inetAddress = InetAddress.getByName("DESKTOP-Q9I6MIA"); 
        System.out.println(inetAddress);//DESKTOP-Q9I6MIA/192.168.11.173
        //getHostName--获得主机名称
        String hostName = inetAddress.getHostName() ;
        System.out.println(hostName);//DESKTOP-Q9I6MIA
        //getahaostAddress--获得主机IP地址
        String ip = inetAddress.getHostAddress();
        System.out.println(ip);//192.168.11.173
    }
}

3. UDP

UDP
    不安全,效率高,不建立连接通道,传输数据有大小限制

UDP发送端实现
    1)创建发送端的端口
        DatagramSocket
            --这个类表示发送和输入端数据的套接字--就是创建发送和输入端的"暗号"--端口号
            public DatagramSocket()
    2)创建数据
        DatagtamPacket
            --这个类表示封装存储的数据的数据包
            public DatagramPacket(byte[] byte, int length, InetAddress address, int port)
                --参数注释
                    byte[] byte--发送数据转换成字节数组发送--发送的内容
                    int length--发送数据的长度--字节数组的长度
                    InetAddress address--发送端的IP地址
                    int port--接收端的端口号!
    3)发送端将数据包存储在数据包中
        DatagramPacket 名 = new DatagramPacket(数据参数) ;
    4)发送
        public void send(数据包) ;
    5)释放资源
        close()
    注意
        传输时,先启动接收端,在使用发送端!
import java.io.IOException;
import java.net.*;
​
//UDP发送端
public class Test {
    public static void main(String[] args) throws IOException {
        //创建端口
        DatagramSocket ds = new DatagramSocket();
        //创建数据
        byte[] bytes = "我是被包起来发送的数据".getBytes();//将数据转换为字节数组
        int length = bytes.length ;//数据长度--字节数组长度
        //获取本机地址,127.0.0.1本机回环地址
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 666 ; //接收端的端口号!
        //将数据包起来
        DatagramPacket dp = new DatagramPacket(bytes,length,address,port);//将数据包起来
        //发送数据包
        ds.send(dp);//通过端口ds发送数据包dp
        //释放资源
        ds.close();
    }
}
UDP接收端实现
    1)创建接收端端口,并创建端口号
        DatagramSocket
            DatagramSocket 名 = new DatagramSocket(端口号) ;
    2)创建接受容器
        --创建一个接收数据的包
            DatagramPacket
    3)接收数据
        用上面的接收包来接收
            public void receive(数据包)
    4)从接收的包中解析包中的内容
        分段接收数据
            public byte[] getData()
        获取数据实际长度
            public int getLength()
        展示数据
            将字节数组转换为字符串
            String str = new String(byte[] bytes , 从什么位置开始接收 , int length)
    5)释放资源
        close()
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
​
//UDP接收端
public class Test_Receive {
    public static void main(String[] args) throws IOException {
        //创建接收端--并创建端口号!--这里端口号和发送端发送的端口号要一致!
        DatagramSocket ds = new DatagramSocket(666);
        //创建接受数据的数据包--缓冲
        byte[] bytes = new byte[1024] ;//用来当作缓冲数据包的大小--1024或者1024的倍数--可以理解为每秒接收的速度!
        int length = bytes.length;//理想数据长度
        DatagramPacket dp = new DatagramPacket(bytes,length);//接收端,不需要其他的
        //接收数据--接收端ds接收缓冲数据包dp的内容
        ds.receive(dp);
        //获取包中数据
        byte[] bytes1 = dp.getData();//获取内容
        //获取实际内容长度
        int length1 = dp.getLength() ;
        //展示数据--利用字节数组转换为字符串
        String message = new String(bytes1,0,length1);//从数组bytes1中的零角标获取length1长的数据
        //获取发送端IP
        String ip = dp.getAddress().getHostAddress();
        System.out.println("发送端的IP是"+ip+" "+"发送内容是:"+message);//发送端的IP是127.0.0.1 发送内容是:我是被包起来发送的数据
        //释放资源
        ds.close();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

五目炒饭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值