day0805(网络编程、UDP、TCP协议、使用TCP协议实现网络聊天与文件上传)

网络通信

计算机网络

​ 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

网络编程

​ 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。

计算机网络之间以何种规则进行通信,就是网络模型研究的问题。

网络模型一般是指

​ OSI(Open System Interconnection开放系统互连)参考模型

​ TCP/IP参考模型

day0805(网络编程、UDP、TCP协议、使用TCP协议实现网络聊天与文件上传)

网络通信三要素

IP地址:InetAddress

网络中设备的标识,不易记忆,可用主机名

端口号

用于标识进程的逻辑地址,不同进程的标识

传输协议

通讯的规则

常见协议:TCP,UDP

Ip地址

要想让网络中的计算机能够互相通信,必须为每台计算机指定一个标识号,通过这个标识号来指定要接受数据的计算机和识别发送的计算机,在TCP/IP协议中,这个标识号就是IP地址。

那么,我们如果获取和操作IP地址呢?

为了方便我们对IP地址的获取和操作,java提供了一个类InetAddress 供我们使用。

没有构造方法,那么如何使类提供的功能呢?

要掌握的功能

​ 获取任意主机:getByName

​ 主机名:getHostName

​ 主机Ip地址:getHostAddress

通过ip地址类可以获取地址对象,在进行网络编程时就是通过地址对象觉得通信方

端口号

物理端口 网卡口

逻辑端口 我们指的就是逻辑端口

​ A:每个网络程序都会至少有一个逻辑端口

​ B:用于标识进程的逻辑地址,不同进程的标识

​ C:有效端口:065535,其中01024系统使用或保留端口。

​ 通过dom命令 netstat -ano可以查看所有占用的端口

网络端口默认为80

网络通信协议

UDP用户数据报协议

​ 将数据源和目的封装成数据包中,不需要建立连接;每个数据报的大小在限制在64k;因无连接,是不可靠协议;不需要建立连接,速度快

TCP数据连接协议

​ 建立连接,形成传输数据的通道;在连接中进行大数据量传输;通过三次握手完成连接,是可靠协议;必须建立连接,效率会稍低

Socket套接字

Socket套接字:

网络上具有唯一标识的IP地址和端口号组合在一起才能构成唯一能识别的标识符套接字。

Socket原理机制:

通信的两端都有Socket。

网络通信其实就是Socket间的通信。

数据在两个Socket间通过IO传输。

day0805(网络编程、UDP、TCP协议、使用TCP协议实现网络聊天与文件上传)

Udp协议:用户数据报协议,无连接,只管发送,无论接收方是否接收。

将要发送的数据进行分割成等大的数据包,实际发送的是数据包,现在的视频聊天、直播等使用的就是udp协议

发送端思路

1:建立udp的socket服务

2:将要发送的数据封装成数据包

3:通过udp的socket服务,将数据包发送出

4:关闭资源

接收端思路

1:建立udp的socket服务.

2:通过receive方法接收数据

3:将收到的数据存储到数据包对象中

4:通过数据包对象的功能来完成对接收到数据进行解析.

5:可以对资源进行关闭

TCP协议

Tcp协议用户连接协议,建立在连接的基础上进行数据的传输。

Tcp协议的连接与断开连接基于3次握手4次挥手

3次握手4次挥手

day0805(网络编程、UDP、TCP协议、使用TCP协议实现网络聊天与文件上传)

TCP实现网络聊天

客户端思路

1:建立客户端的Socket服务,并明确要连接的服务器。

2:如果连接建立成功,就表明,已经建立了数据传输的通道.就可以在该通道通过IO进行数据的读取和写入.该通道称为Socket流,Socket流中既有读取流,也有写入流.

3:通过Socket对象的方法,可以获取这两个流

4:通过流的对象可以对数据进行传输

5:如果传输数据完毕,关闭资源

服务器端思路

1:建立服务器端的socket服务,需要一个端口

2:服务端没有直接流的操作,而是通过accept方法获取客户端对象,在通过获取到的客户端对象的流和客户端进行通信

3:通过客户端的获取流对象的方法,读取数据或者写入数据

4:如果服务完成,需要关闭客户端,然后关闭服务器,但是,一般会关闭客户端,不会关闭服务器,因为服务端是一直提供服务的

练习

使用udp协议完成socket接收与发送信息,实现多次发送接收

使用tcp协议完成文件客户端上传至服务器端(上传时显示上传进度)

Tcp协议完成多人聊天室