1.网络编程
1.网络:
就是不同地域,不同型号,不同ip等多态计算机相互连接沟通形成的通信系统
2.元素:
看的见的元素:
网线、交换机、计算机、内存条等一系列的硬件设备
看不见的元素:
传输协议、io流、运行的程序
3.概念:
基于计算机网络来进行数据的接收发送,处理等操作的过程中,使用编程语言来实现
4.三要素:
ip地址、端口号、传输协议
5.IP地址:
概述:
计算机在网络中ip协议分配给每一台计算机的唯一标识。
作用:可以准确定位计算机的位置
分类:
ipv4:是由四个字节组成的一段序列
ipv6:是由8组16进制的数组组成的一段序列
6.端口号【重点】:
概述;
是计算机中正在运行的进程的编号。端口号不可以重复。它是由2个字节大小的数字来表示,0-65535的范围
作用:
能够通过他准确的找到计算机中正在运行的进程
端口号的分配:
1.程序在启动的时候计算机随机自动分配端口号
2.程序人为的指定端口号。比如:mysql的3306端口号设置
常用的端口号:
mysql:3306
oracle:1521
tomcat:8080
QQ:4000
7.通信协议:
概述:
数据在传输过程中接收、发送、处理等操作是有规则。不同的场景有不同的协议,往往不同的协议协同合作维护网络编程的环境
网络分层:
应用层:分工作业
传输层:把数据从一端传到另一端 TCP协议 UDP协议
网络层; ip协议
物理层:相关的硬件设施
8.InetAddress类:
1.概述:
此类表示互联网协议(ip)地址。【对ip的相关特征和行为的描述,一般包括主机和ip地址】
2.获取对象的方式:【静态方法】
getAllByName(String host):通过主机 名称获取对应的所有ip地址对象的数组
getByAddress(byte[] addr):通过ip地址的字节数组获取ip地址的对象
getByAddress(String host,byte[] addr):通过主机名称和ip地址的字节数组获取ip地址的对象
getByName(String host):通过主机名称获取对应ip地址对象
getLocalHost():获取本地主机的ip对象
3.获取对象的属性常用方法:
getAddress():返回对象的原始ip地址
getHostName():返回对象的主机名称
toString():将ip地址转换为字符串

2.UDP协议和TCP协议
概述:是传输层的协议,是数据端到端的协议
**UDP:**是面向无连接的协议。不用断喝端之间联系就可以进行数据的传输。不管对方是否在线。直接操作数据。到那时安全性低,效率高【不存在客户端和服务段】,只有发送端和接收端
特点:1.数据不安全;2.效率高
TCP:
概述:面向连接的传输协议。要求对方必须 在线并且连接成功。区分客户和服务,把发送数据端叫做客户端,接受数据端叫做服务端。
连接过程:
三次握手:
第一次:发送端发送信号给接收端
第二次:接收端接受到信号给出回应
第三次:发送端收到回应确定连接成功
特点:
1.数据安全性有保证
2.效率低
Socket编程【套接字编程】
1.套接字的概述:
传输层编程是端到端的编程,套接字就是端到端进行交流的中间服务
2.不同的协议下使用的套接字不一样:
UDP协议:DatagramSocket
TCP协议:
客户端:Socket
服务段:ServerSocket
UDP编程
关键字:
DatagramSocket:它是UDP编程的套接字,此类表示用来发送和接收数据报包的套接字
数据报包:【DatagramPacket】:指包装了发送的数据和接收数据的一个容器。【发送和接收的内容、发送的ip地址、端口号等内容】
构造方法
DatagramSocket():获取套接字对象【一般用于发送端】
DatagramSocket(int port):获取套接字对象【一般用于接收端】
常用方法:
1.send(DatagramPacket dp):发送数据报包出去
2.receive(DatagramPacket dp):接收数据报包 DatagramPacket
方法详解:
DatagramPacket(byte[]buf,int offset,int length,InetAddress address ,int port):用于发送端
说明:
buf:存放发送或接收数据内容的字节数组
offset:buf数组从那个角标开始发送或接收,代表开始的角标值
length:代表发送内容的长度,或者接受数组长度
address:发送端发送目标ip地址
port:发送的目标端口号
数据报包的常用方法:
getData():获取数据报包中的内容数组
getLength():获取数据报包中有效内容的长度
发送端编写步骤:
1.获取套接字对象
2.准备发送的相关数据
3.获取数据报包同时封装发送的数据
4.发送数据报包
5.准备接受数据的容器【字节数组相关数据】
6.准备一个接收数据的数据报包
7.接收数据
8.解析数据
DatagramPacket(byte[] buf,int offset,int length):用于接收端
接收端编写步骤:
1.获取套接字
2.准备接受容器【字节数组的相关数据】
3.接收数据到数据报包
4.解析接收到的数据【数据报包方法】
5.准备回应的内容【字节数组】
6.将内容添加到接收使用的数据报包中
7.将该数据报包发送回发送端
Tcp编程:
1.客户端:
Socket:此类实现客户端套接字。
构造方法:
Socket(InetAddress address,int port)创建套接字对象,包含了目标的ip和端口号
发送和接收数据采用的是io流技术,套接字发送和接受数据,先获取对应的流对象
常用功能:
getOutputStream():获取字节输出流【专门使用在客户端和服务端流的目标就是客户端和服务端】
getInputStream():获取字节输入流
2.服务端
ServerSocket:
此类实现服务器套接字。服务器套接字等待请求通过网络传入。他基于该请求执行某些操作,然后可能向请求者返回结果
某些操作:
ServerSocket套接字侦听客户端套接字是否入侵服务段,侦听客户端的套接字,要和该套接字交流,找一个和客户端同一类型的套接字对象
构造方法:
ServerSocket(int port):创建服务端的套接字对象【内含端口号】
常用方法:
accept():获取一个和客户端类型一致的套接字对象
3.TCP客户端的步骤
1.创建Socket套接字对象
2.获取字节输出流
3.使用输出流写出内容
4.获取字节输入流
5.创建读取内容的字节数组
6.读取内容
7.解析内容
8.关闭流资源
4.TCP服务端步骤
1.创建ServerSocket套接字对象
2.提供Socket套接字对象【好和客户端的套接字交流】
3.获取字节输入流
4.创建读取内容的字节数组
5.读取内容
6.解析内容
7.获取字节输出流
8.使用输出流写出内容
9.关闭流资源

3.反射【正向运行的逆过程】
1.概述:
在程序运行过程中可以对任意类型中的任意资源进行操作,这种动态获取或操作资源的行为就叫做反射
2.场景:
在不知道操作类型的基础进行操作采用反射,只有在要运行的时候才知道类型
3.正向:
编写源代码->编译成字节码文件->jvm加载字节码文件启动运行->创建对象或类名->调用对应的方法和属性运行
4.反射:
代码在运行的过程中直接获取到字节码文件对象->通过字节码文件对象获取对应的元素的对象->通过元素对象调用对应的方法开始执行功能
5.字节码文件对象:
字节码文件在内存中的对象表现形式
6.jvm加载.class文件的处理机制:
1.jvm通过类加载器将字节码文件以对象的形式加载到内存中
2.jvm加载之后对这个Class对象的内容进行分类管理【属性、成员方法构造方法】
3.jvm把这些类分别描述为对应的类型【属性对应Filed、方法对应的类Method、构造对应的类Constract】
7.执行的顺序:
jvm加载字节码文件创建Class对象,Class对象去统筹属性、方法、构造各自类的对象来进行操作
8.反射的好处:
1.解耦合,利于编程
2.提高代码的维护性。【实现代码和维护的分离】
9.使用反射技术的步骤:
1.获取Class对象【获取那个字节码文件的对象】
2.通过字节码文件对象获取要操作的元素的对象
3.使用元素对象调用对应的方法来执行相关的功能
10.获取类的字节码对象的三种方式:
①:对象名称.getClass():直接获取对象对应类型的字节码文件对象
②:类名.class:直接获取到类型的字节码文件对象
③:Class.forName(String pathName):根据pathName来创建对应类型的字节码文件对象
注意:pathName:指一个类的全名称【全限定类名:包路径+类名】
11.反射获取类中的公共构造方法和使用
1.如何获取构造方法对象?
getContructor(Class params):根据参数的类型及个数返回对应的构造方法对象。只能获取到公共的构造方法
说明:params:指多个class类型的参数;params:传参的时候传的是构造方法形参类型字节码文件对象
getContructors():返回字节码文件对象中所用的构造方法对象
2.如何控制构造方法创建类型对象:
1.构造方法作用:创建对象并初始化值
2.使用Constructor类中的方法:
newInstance():创建构造对象所在的字节码文件对象对应类型的实例化对象【叫构造方法自己执行自己】
12.反射获取类中的成员变量和使用
1.如何获取公共权限成员变量【Field】对象?
getField(String name)根据给定的属性名获取对应属性的对象
getFields():获取所有公共的属性对象
13.获取类中的成员方法和执行
1.如何获取成员方法对象:使用class类中的方法:getMethod(String name,Class<?> parameter types):根据给定的名称和参数类型获取对应的方法对象
14暴力反射
1.通过Class类中:
getDeclareXxx方法:可以获取类中的所有声明的成员(属性、方法内部类),私有的成员也可以获取到
2.修改该对象的访问权限:(通过AccessibleObject类中的):
setAccessible(boolean b):改变对象的访问权限
isAccessible():判断对象是否可以访问。
15.例子说明:
正确编程的时候放不进去,因为list集合指定泛型为integer,在编译的过程中这个指定的泛型是起作用的,它是要去对放进来的数据进行类型和范围的审核,符合泛型类型的要求可以添加,不符合直接报错不让添加。泛型只在编译时期起作用,一旦类开始运行的时候。类加载到方法区泛型就消失。我可以在集合字节码文件被加载到方法去以后去给list添加元素,就不会有泛型的约束,就可以添加进去了
注意事项:泛型的擦除:到了运行时期泛型就不起作用【相当于消失】;;泛型只在编译时期起作用叫做伪泛型。

网络编程和反射的基本知识点的总结相关推荐

  1. Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制)

    原文:Java 语言基础(异常机制和File类,IO流,多线程,网络编程,反射机制) 异常机制和File类 异常机制 基本概念 异常就是"不正常"的含义,在 Java 语言中主要指 ...

  2. 异常、File、IO、网络编程、反射

    文章内容输出来源:拉勾教育大数据开发高薪训练营 第一章 异常机制 1.1 异常概念 异常,就是不正常的意思.在生活中,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中: ...

  3. jAVA EE NZ2001 java EE学习总结 第七周(包含思维导图) 主要内容I/O框架、网络编程、反射

    第七周 Day31.Day32 I/O框架 流的概念 内存与存储设备之间传输数据的通道 流的分类 按方向[重点] 输入流 将存储设备中的内容读入到内存中 输出流 将,<内存>中的内容写入到 ...

  4. 5_异常_多线程_设计模式_IO流_网络编程_反射

    JavaSE_第五周 异常 异常的概念 什么是异常 概念 概念:程序在运行过程中出现的特殊情况异常-----通过Jvm将异常的信息打印在控制台---告诉开发者(当前程序在某个环节出现了哪些问题!) 异 ...

  5. 回顾:网络编程(待排版,知识点看情况补充

    一, CS模型:(整个流程) 服务器启动后,首先创建一个(或多个)监听socket, 并调用bind函数将其绑定到服务器感兴趣的端口上,然后调用listen函数等待客户连接.服务器稳定运行之后,客户端 ...

  6. xml、网络编程、 反射

    XML 常用于配置文件.传输数据. <?xml version="1.0" encoding="UTF-8"?><persons> &l ...

  7. 《TCP/IP网络编程》第3章知识点汇总

    3. 地址族与数据序列(bind()) 3.1 IP地址和端口号 3.1.1 IP地址 IP 是 Internet Protocol (网络协议)的简称 为使计算机连接到网络并收发数据,必须向其分配I ...

  8. java网络编程是java开发吗,22年最新

    凭借编程大牛最新版Java核心开发手册,掌握了能进阿里.面对市场需求缩水的时期,老关的朋友是如何拿到阿里offer的呢?别着急!今天就来分享一下我朋友的蜜拓蜜武器:阿里大牛整理的Java核心开发手 J ...

  9. Java面试知识点:网络编程

    问题:Java面试知识点:网络编程 答案: 1.InetAddress 代码如下: package com.xy;import java.net.InetAddress; import java.ne ...

最新文章

  1. ASP.NET的票据工具类FormsAuthenticationTicket
  2. VS2005工程的Device右边内容为空问题
  3. R语言数据可视化 ggplot2基础2 创建单图层的散点图 创建facet
  4. C#后台访问前台Html控件的方法
  5. php数组地址,怎么实现javascript数组与php数组的地址传递
  6. cnn生成图像显著图_基于CNN与图像前背景分离的显著目标检测
  7. OpenShift 4 之 Hello-OpenShift
  8. 编程语言对比 导入模块
  9. javaWEB知识总结——Ajax和Json
  10. [转]android刷新后R.java不见了
  11. bzoj 2190: [SDOI2008]仪仗队 -- 欧拉函数
  12. 网站性能优化 - 数据库及服务器架构篇
  13. javascript变量说明
  14. Java从入门到精通 第21章 Annotation
  15. Atitit 常见硬件集成列表 目录 1.1. 小程序设备类 1 1.2. atitit.常见手机的传感器与外设 attilax总结 1 1.3. Pc机外设 1 1.4. 设备管理器 2 1.1
  16. 谷歌火狐浏览器被360浏览器劫持的解决办法
  17. 前端面经 | 腾讯实习生校招面试心路历程
  18. 农历2017年8月初4_2017年8月25日
  19. 软件开发项目经理岗位职责
  20. 基于JSP + Servlet + Mysql 的校园二手交易平台(源码 + 文档)

热门文章

  1. 【转载】SQL Server 批量插入数据的两种方法
  2. CVPR 2021 接收论文临时列表!27%接受率!
  3. 12分钟训练COCO模型!速度精度双提高
  4. 谷歌AI:根据视频生成深度图,效果堪比激光雷达
  5. 【OpenCV】OpenCV实战从入门到精通之 -- 基本图像绘制
  6. 华科开源多目标跟踪(MOT)实时新SOTA:FairMOT
  7. 什么是嵌入式视觉、行业应用、目前挑战
  8. 深度隐式表达系列 (一)
  9. 小白初涉,先试试水。涉及Python,C语言基础,机器学习等
  10. 叠置分析(涉及结果属性和输入图层属性的关系)