一、网路编程介绍
指在网络通信协议下,不同计算机上运行的程序,进行数据传输
二、软件架构分类
1)CS架构(Client Server 客户端 服务端)
在用户本地有一个客户端程序,在远程有一个服务端程序(如微信)
优点:画面精美,功能丰富用户体验度更高
缺点:需要开发客户端,也要开发服务端,用户需要下载和更新的时候比较麻烦
场景:适合定制专业化的办公类软件如:IDEA、网游
2)BS架构(Browser Server 浏览器 服务器端)
只需要一个浏览器,用户通过不同的网址,客户访问不同的服务器端程序
优点:不需要开发客户端,只需要开发服务端,用户不需要下载,打开浏览器就能使用
缺点:如果应用过大,用户体验受到影响
场景:适合移动互联网应用,可以在任何地方随时访问的系统
注:微信小程序类是BS架构,因为没有安装独立的客户端
三、网络编程三要素
1.IP:设备在网络中的唯一标识
IPV4:
互联网通信协议第四版,采用32位地址长度(2^32个IP地址),分成四组(点分十进制表示法:192.168.1.88),2019年11月月26日全部分配完毕,主流使用
1.公共地址(万维网使用)和私有地址(局域网使用)
2.192.168.开头的就是私有地址,范围在192.168.0.0~192.168.255.255,专为组织机构内部使用,以此节省IP,由交换机分配
IPV6:互联网通信协议第六版,由于互联网的蓬勃发展,IP地址的需求量越来越大,而IPV4的模式下IP的总数有限的采用128位地址长度(2^128个IP地址),分为8组(冒分16进制表示法:2001:DB8:0:23:8:800:200C:147A,如果计算出来的16进制表示形式中间有多个连续的0会省略,变成::,这种称为0位压缩表示法)
特殊IP地址:
127.0.0.1,也可以是我们常说的localhost:是回送地址也称本地回环地址,也称本机IP,永远只会寻找当前所在本机(常用于本地开发)
常用的CMD命令:
ipconfig:查看本机IP地址
ping:检查网络是否联通
InetAddress 对象:
为了方便我们对IP地址的获取和操作,Java提供 了-一个类InetAddress供我们使
InetAddress:此类表示Internet协议(IP) 地址。
2.端口:程序在设备中的唯一标识
由两个字节表示的整数,取值范围: 0~65535
其中0~ 1023之间的端口号用于一些知名的网络服务或者应用。
我们自己使用1024以上的端口号就可以了。.
注意:一个端口号只能被-一个应用程序使用。
3.协议:数据在网络中传输的规则,常见的协议有UDP、TCP、http、https、ftp
1) UDP:用户数据协议(User Datagram protocol)
UDP是面向无连接通信协议:速度快,有大小限制一次最多64K,数据不安全,易丢失数据
不管是否已经连接成功,都能发送
2)TCP: 传输控制协议TCP(transmission Control Protocol)
TCP协议是面向连接的通信协议:速度慢,没大小限制,数据安全
需要确保连接成功才能发送数据
四、UDP 协议应用
UDP通信——发送数据步骤:
1.创建发送端的DatagramSocket对象
2.数据打包(DatagramPacket)
3.发送数据
4.释放资源
UDP通信——接收数据步骤:
1.创建接收端的DatagramSocket对象
2.接收打包好的数据
3.解析数据包
4.释放资源
Send.java
Resolve.java
注意:启动是县启动接收,在启动发送
案例:
按照下面的要求实现程序
UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束
UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
五、TCP协议应用
客户端:
1.创建Socket对象指定ip 和端口
Socket(String host, int port)
2.通过socket对象获取传输数据的流对象
将客户端的流写入到服务端: OutputStream getoutputStream( )
读取服务端书写过来的数据:InputStream getInputStream()
3.通过流对象收发数据
4.释放资源
服务端:
1.创建ServerSocket对象指定端口
ServerSocket(int port )
2.响应客户端发送的请求
Socket accept( )
3.通过socket 对象获取传输数据的流对象
向客户端输出:OutputStream getoutputStream()
读客户端输出流:InputStream getInputStream()
4.通过流对象收发数据
5.释放资源
注意:先启动服务端
TCP的三次握手
第一次:客户单端向服务器发出连接请求(SYN包),等待服务器确认
第二次:服务器向客户端返回一个响应(SYN包 + ACK包),告诉客户端收到请求
第三次:客户端向服务器再次发出确认信息(ACK包),连接建立
TCP的四次挥手
第一次:客户端向服务器发出取消连接请求
第二次:服务器向客户端返回一个响应,表示接收到客户端取消请求
(服务器讲最后的数据处理完毕)
第三次:服务器向客户端发出确认取消信息
第四次:客户端再次发送确认信息,连接取消
案例:模拟上传文件
要求:处理文件重名、多线程、使用线程池
Server.java
SubmintText.java
Client.java
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/h6javajc/19934.html