学习JAVA的二十二天(基础)

目录

网络编程

三要素:

IP 

InetAddress类

端口号

协议

UDP协议

 TCP协议

反射

动态代理 



                                      前言:学习JAVA的第二十一天(基础)-CSDN博客

网络编程

                在网络通信协议下,不同计算机上运行的程序,进行的数据传输

三要素:

                IP地址:设备在网络中的地址,是唯一的标识。

                端口号 :应用程序在设备中唯一的标识。

                协议:数据在网络中传输的规则,常见的协议有UDP、TCP、http、 https、 ftp。

IP 

        全称: Internet Protocol,是互联网协议地址,也称IP地址。是分配给上网设备的数字标签

常见IP的分类:

                        IPv4:全称: Internet Protocol version 4,互联网通信协议第四版。采用32位地址长度,分成4组

                        IPv6:全称: Internet Protocol version 6,互联网通信协议第六版。采用128位地址长度,分成8组

IPv4的地址分类形式:
                        公网地址(万维网使用)和私有地址(局域网使用)。
                        192.168.开头的就是私有地址,范围即为192.168.0.0--192.168.255.255

特殊IP地址:

                127.0.0.1,也就是localhost:是回送地址也称本地回环地址,也称本机IP

查看电脑IP方法:

                        win+R 输入 cmd 命令中输入ipconfig

             

InetAddress类

                        java中表示ip的类

测试类:

public static void main(String[] args) throws UnknownHostException {
        //获取InetAddress对象
        InetAddress address = InetAddress.getByName("192.168.87.1");
        System.out.println(address);///192.168.87.1

        //获取主机名
        System.out.println(address.getHostName());//LAPTOP-MNVDV52U

        //获取ip地址
        System.out.println(address.getHostAddress());//192.168.87.1

    }

端口号

                应用设备在设备中唯一的标识(由两个字节表示的整数)

              一个端口只能被一个应用软件使用

协议

                        计算机网络中,连接和通信的规则被称为网络通信协议

UDP协议
  • 用户数据报协议(User Datagram Protocol)
  • UDP是面向无连接通信协议。
  • 速度快,有大小限制一次最多 发送64K,数据不安全,易丢失数据

 发送数据测试类:

 public static void main(String[] args) throws IOException {
        //发送数据 创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();

        //打包数据
        String str = "何时复西归";
        byte[] bytes = str.getBytes();
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 12345;
        DatagramPacket dp =new DatagramPacket(bytes,bytes.length,address,port);

        //发送数据
        ds.send(dp);

        //释放资源
        ds.close();
    }

接受数据测试类:

 public static void main(String[] args) throws IOException {
        //发送数据 创建DatagramSocket对象
        DatagramSocket ds = new DatagramSocket();

        //打包数据
        String str = "何时复西归";
        byte[] bytes = str.getBytes();
        InetAddress address = InetAddress.getByName("127.0.0.1");
        int port = 12345;
        DatagramPacket dp =new DatagramPacket(bytes,bytes.length,address,port);

        //发送数据
        ds.send(dp);

        //释放资源
        ds.close();
    }

UDP的三种通信方式

  1. 单播
  2. 组播
  3. 广播 

 TCP协议
  • 传输控制协议TCP(Transmission Control Protocol)
  • TCP协议是面向连接的通信协议。
  • 速度慢,没有大小限制,数据安全。

 

TCP通信程序

                                TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象

                                通信之前要保证连接已经建立

                                通过Socket产生IO流来进行网络通信

发送数据测试类

  public static void main(String[] args) throws IOException {
        //TCP协议->发送数据

        //创建Socket对象
        Socket socket = new Socket("127.0.0.1",12345);

        //获取输出流
        OutputStream os = socket.getOutputStream();

        //写出数据
        os.write("久违了".getBytes());

        //释放资源
        os.close();
        socket.close(); 


    }

接收数据测试类

 public static void main(String[] args) throws IOException {
        //TCP协议->接收数据
        ServerSocket ss = new ServerSocket(12345);

        //监听客户端的链接
        Socket socket = ss.accept();

        //获取输入流
        InputStream is = socket.getInputStream();
        //防止乱码问题
        InputStreamReader isr = new InputStreamReader(is);
        int b;
        while((b = isr.read()) != -1){
            System.out.print((char) b);
        }

        //释放资源
        socket.close();
        ss.close();
    }

反射

                反射允许对封装类的字段,方法和构造函数的信息进行编程访问

获取class对象的三种方式:

                                                ①Class.forName("全类名");
                                                ②类名.class
                                               ③对象. getClass();

获取构造方法:

方法名说明
ConstructoK?>[] getConstructors()返回所有公共构造方法对象的数组
Constructor<?>[] getDeclaredConstructors()返回所有构造方法对象的数组
Constructor<T> getConstructor(Class<?>... parameterTypes)返回单个公共构造方法对象
Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes)返回单个构造方法对象

获取成员变量:

方法名说明
Field[] getFields()返回所有公共成员变量对象的数组
Field[] getDeclaredFields()返回所有成员变量对象的数组
Field getField(String name)返回单个公共成员变量对象
Field getDeclaredField(String name)返回单个成员变量对象

 获取成员方法:

方法名说明
Method[] getMethods()返回所有公共成员方法对象的数组,包括继承
Method[] getDeclaredMethods()返回所有成员方法对象的数组,不包括继承
Method getMethod(String name, Clas<?>... parameterTypes)返回单个公共成员方法对象
Method getDeclaredMethod(String name, Class<?>... parameterTypes)返回单个成员方法对象

动态代理 

                在程序的执行过程中,使用jdk的反射机制,创建代理对象,并动态的指定代理的目标类​​​​​​​

特点:

        ​​​​​​​       无侵入式的给代码增加额外的功能



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值