java网络编程---网络编程三要素、对象流

一、重点知识

网络参考模型概念七层,我们一般看为四层

UDP每个包64kb

查看ip命令:ipconfig

测试ip指令 ping

同一台电脑使用重复端口时,如果两个程序都被启动了会报异常

unknowhostexception不识别的主机异常,编译时异常

一个域名可以有多个主机,用getAllByName()方法获得所有的主机ip地址

两台机器之前通讯,就是socket通讯

Serversocket.accept 是一个会阻塞程序继续执行的方法

实际上在资源关闭中,只关闭socket就好了,再关闭socket时会关闭他创建的流

二、课堂知识

2.1、对象流(操作对象的)

ObjectInputStream

readObject()--->Object--->子类对象即可。

ObjectOutputStream

writeObject(Object obj)

没有实现Serializable接口报错:java.io.NotSerializableException: com.qf.demo02.Person

就是说Person这个类,没有被序列化。没有实现Serializable接口。

java.io.Serializable接口:类要想具有序列化的功能,那么需要实现java.io.Serializable接口的类启用。 如果没有实现该接口,那么类的实例不会具有序列化和反序列化的功能。

该接口没有任何的方法需要实现。我们称为“标记接口”。

序列化和反序列化:

序列化:将对象,转为一系列的二进制编码。p1--->0101010101011....

反序列化:将二进制数值,再转为对象的过程,就叫反序列化。0101010101011....--->p1

serialVersionUID,每一个实现java.io.Serializable的类,表示能够被序列化和反序列化。都需要提供一个serialVersionUID序列化的版本号。如果代码中没有显示的提供,那么程序中自动生成(类中的结构:属性,方法)。序列化的对象的serialVersionUID和反序列化回来的时候serialVersionUID要对应上,否则异常:java.io.InvalidClassException

在每个类实现java.io.Serializable接口的时候,提供一个固定的serialVersionUID。

构造方法:

ObjectOutputStream(OutputStream out)

创建一个写入指定的OutputStream的ObjectOutputStream。

ObjectInputStream(InputStream in)

创建从指定的InputStream读取的ObjectInputStream。

序列化的注意点:对象

1、对象的属性能够被序列化,static的属性不能被序列化。

2、transient修饰符,使用该修饰符修饰的属性,不会被序列化的。

2.2TCP协议和UDP协议

2.2.1TCP协议

1、面向连接,数据传递的时候很安全。

三次握手,四次挥手。

2、因为面向连接,所以传递的效率较低。

3、面向连接,数据安全的。可以传递大量的数据。

4、服务端和客户端

服务端:提供服务的

客户端:来访问服务端,获取数据

客户端登录,数据下载,文件传输。。

2.2.2UDP协议:

1、面向无连接,数据传的时候不是很安全。

2、因为面向无连接,效率很高。

3、UDP

4、没有客户端和服务端的概念。叫做发送方,另一个叫接收方。

2.3、网络编程的三要素

2.3.1、协议

理解为是规则,网络上的双方,都要共同遵守的规定。

TCP/UDP

2.3.2、IP地址

在网络中的主机的唯一标识。

2.3.3、port端口

网络程序的唯一标识。int类型的整数。0-65535。

同一台电脑上一个端口只能被一个网络程序所占用。

A程序:占用端口9527。启动后,正在使用9527端口,那么其他的程序如果还使用9527端口,就会报错,端口已经被占用。

2.4、网络编程相关的类:

2.4.1、InetAddress

Java中用于描述IP的类

2.4.2、Socket

基于TCP协议的客户端的表示。

2.4.3、ServerSocket

基于TCP协议的服务端的表示。

2.5、TCP编程的流程

服务端流程
step1:创建ServerSocket,一个服务端的程序:

step2:等待客户端申请链接,accept()接收链接。——>Socket

step3:创建流:InputStream,OutputStream

step4:关闭链接,断开资源

客户端流程

step1:创建Socket,客户端的程序

申请链接服务器:(服务器的ip地址和port)

step2:创建流:InputStream,OutputStream

step3:关闭链接,断开资源

你可能感兴趣的:(java网络编程---网络编程三要素、对象流)