对象流:操作对象的
//1.操作1
step1:先构建了Person类,创建p1对象
step2:让Person类实现Serializable接口,"贴标签"
step3:ObjectOutputStream写对象出去到person.txt中
序列化
step4:ObjectInputStream将对象读回来:Object-->p1
反序列化
//2.操作2
step1:先构建了Person类,创建p1对象
step2:让Person类实现Serializable接口,"贴标签"
step3:ObjectOutputStream写对象出去到person.txt中
序列化
插入一步:修改Person类
属性封装,提供get和set方法。。。
step4:ObjectInputStream将对象读回来:Object-->p1
反序列化
序列化和反序列化:
序列化:将对象,转为一系列的二进制编码。p1--->0101010101011....
反序列化:将二进制数值,再转为对象的过程,就叫反序列化。0101010101011....--->p1
1、对象的属性能够被序列化,static的属性不能被序列化。
2、transient修饰符,使用该修饰符修饰的属性,不会被序列化的。
网络参考模型
1、7层
2、4层
通信协议
TCP协议和UDP协议
TCP协议:重点掌握——>好比打电话:
1、面向连接,数据传递的时候很安全。
三次握手,四次挥手。
2、因为面向连接,所以传递的效率较低。
3、面向连接,数据安全的。可以传递大量的数据。
4、服务端和客户端
服务端:提供服务的
客户端:来访问服务端,获取数据
客户端登录,数据下载,文件传输。。
UDP协议:了解——>好比写信
1、面向无连接,数据传的时候不是很安全。
2、因为面向无连接,效率很高。
3、UDP
4、没有客户端和服务端的概念。叫做发送方,另一个叫接收方。
网络编程的三要素
2.4.1、协议
理解为是规则,网络上的双方,都要共同遵守的规定。
TCP/UDP
2.4.2、IP地址
在网络中的主机的唯一标识。
port端口
网络程序的唯一标识。int类型的整数。0-65535。
同一台电脑上一个端口只能被一个网络程序所占用。
A程序:占用端口9527。启动后,正在使用9527端口,那么其他的程序如果还使用9527端口,就会报错,端口已经被占用。
网络编程相关的类:
InetAddress
Java中用于描述IP的类
Socket
基于TCP协议的客户端的表示。
ServerSocket
基于TCP协议的服务端的表示。
TCP编程的流程
服务端:ip地址:192.168.1.100,port:9527
step1:创建ServerSocket,一个服务端的程序:
step2:等待客户端申请链接,accept()接收链接。——>Socket
step3:创建流:InputStream,OutputStream
step4:关闭链接,断开资源
客户端:ip地址:192.168.1.150,port:20000
step1:创建Socket,客户端的程序
申请链接服务器:(服务器的ip地址和port)
step2:创建流:InputStream,OutputStream
step3:关闭链接,断开资源