网路编程
CS :客户端与服务器
BS : 浏览器和服务器 协议公开 数据安全 存在问题(目前加密算法很厉害)
1.网络协议:
遵循网路数据传输规则
TCP/IP 协议 4层 视频语音需要对方同意
UDP 协议 7 层 发消息收到没收到 都行
应用层
传输层
网络层
链路层
2. IP地址和端口号
ipv4 ipv6 通过IP地址找到计算机
端口号 是找到对应软件 不会出现QQ和微信聊天
3.InetAddress 类
子类 Inet4Address Inet6Address
4.UDP协议 不可靠 不连接
是无连接通信协议
数据的发送发送端和接收端 不建立逻辑连接
不能保证数据的完整型
5TCP协议 面向连接 安全 可靠
点对点通信
连接中可以大量传输
实现两台计算机之间的通信 ,通信两端需要创建连接
区别在于 UDP 中只有发送端和接收端
原理:
server client
创建服务器 创建客户端对象
启用监听 本地主机:1.localhost 2. 127.0.0.1 3. ip 地址 192.168.0.107
获取输入流 读取客户端信息 向服务器发一条数据
先启用服务端~~~~~~~~~~~~
在启用客户端
反射(照镜子 Java 类加载器 classLoader)
反射:
万事万物皆对象:
1.反射概述
反射是指对于任何一个Class类,
在"运行的时候"都可以直接得到这个类全部成分。
在运行时,可以直接得到这个类的构造器对象:Constructor
在运行时,可以直接得到这个类的成员变量对象:Field
在运行时,可以直接得到这个类的成员方法对象:Method
这种运行时动态获取类信息以及动态调用类中成分的能力称为ava语言的反射机制。
2.反射的关键
先得到Class类的对象,然后就可以得到Class的全部成分
拿成员变量 Field
拿函数 Method
拿构造器 Constructor
反射的第一步 就是 获取Class类的对象!!!!!!!!
1.Class类中的一个静态方法 forName (权限名 包名 +类名)
Class c = Class.forName("com.msr.lianXi02.Student");
System.out.println("c = " + c);//Student.class
2. 类名.class
Class c1 = Student.class;
3.对象.getClass() 获取对象对应类的Class对象
Student s = new Student();
Class c2= s.getClass();
第二步 反射获取构造器对象 Constructor
第一种
public void getConstructors() {
//第一步获取类对象
Class c = Student.class;
//第二布 只能拿public
Constructor[] constructors = c.getConstructors();
//遍历构造器
for (Constructor constructor : constructors) {
System.out.println(constructor.getName() + "====" + constructor.getParameterCount());
}
}
第二种
public void getDeclaredConstructors() {
//第一步获取类对象
Class c = Student.class;
//第二布 提取类中的全部构造器对象 所有都可以拿
Constructor[] constructors = c.getDeclaredConstructors();
//遍历构造器
for (Constructor constructor : constructors) {
System.out.println(constructor.getName() + "====" + constructor.getParameterCount());
}
}
第三种
public void getConstructor() throws NoSuchMethodException {
//第一步获取类对象
Class c = Student.class;
//第二布 定位单个构造器对象
Constructor cons = c.getConstructor();
//遍历构造器
System.out.println(cons.getName() + "====" + cons.getParameterCount());
第三步 反射函数 Method
Class类中获取方法:
public Method[] getMethods();//获取包括自身和继承(实现)过来的所有的public方法——Method不支持泛型<>,即后面不接<>
public Method[] getDeclaredMethods();//获取自身所有的方法(private、public、protected,和访问权限无关),不包括继承的
public Method[] getMethod(String methodName, Class<T>...parameterTypes);//表示获取指定的一个公共的方法,包括继承的
methodName:表示获取的方法的名字
parameterTypes:表示获取的方法的参数的Class类型
setAccessible (true ) 取消Java 的权限检测