网络编程
一,软件架构
1,网络编程入门
C\S架构,全称:Client\Server 客户端和服务器架构
B\S架构,全称:Browser\Server 浏览器和服务器架构
★,两种架构各有优势,无论哪种都离不开网络的支持,B\S会成为趋势
网络编程:在一定协议下,编写实现两台计算机通信的程序
2,网络通信协议
概述:
计算机必须遵守的规则----》目标是完成数据交换
4层分层的模型:
物理层,数据链路层 底层网络协议
网络层 IP (因特网互相协议)
传输层 TCP\UDP
应用层 HTTP(https比http更安全一些)
3,协议分类
java.net包中包含了相关的类和接口----》提供两种常见的网络协议支持
1,TCP
概述:
面向链接的通信协议。
特点:
可以保证数据的安全传输,不丢失。 下载文件,浏览网页等。
原则:(三层握手)
1》客户端向服务器发送请求,等待服务器确认
2》服务器向客户端做出响应,确认请求
3》客户端再次向服务器发出确认请求,确认连接
2,UDP
概述:
面向无链接的通信协议
特点:
传输数据不需要连接,不管对方是否在线,传输速度快,但是容易丢失数据,不可靠的协议。 视频会议,QQ聊天等。
二,网络通信的三要素
1,协议
如:HTTP,TCP,UDP等
2,IP
IPv4 由32位的二进制组成,可组42亿个,每位0-255之间
IPv6 由128位的十六进制组成,解决了网络资源不够用的问题
cmd----》控制台 DOS命令:
1》ipconfig 查询自己的IP地址
2》ping 空格 IP地址 判断网络是否畅通
3,端口号
网络通信的本质是两个进程(应用程序),因此用端口号保证唯一,不重复
用两个字节表示整数,0-65535之间
0-1023已被知名网络服务占用了,不能用。
如:
服务器端口 80
MySQL 3306
Oracle 1521
三,TCP通信
1,要严格区别客户端 client 服务器端 server
两端通信步骤:
1》客户端主动连接服务器,连接成功才通信
2》服务器端一定要先启动
2,java中提供了两个类来实现TCP程序
java.net.Socket----》创建Socket对象----》发送请求到服务器----》服务器做出响应----》两者建立通信
java.net.ServerSocket----》创建ServerSocket对象----》相当于开启一个服务----》用来等待客户端连接
四,Socket
概述:
此类实现客户端(也可以叫做“套接字”),是两台机器间通信的端点
构造:
new Socket(InetAddress address,int port) 创建对象,参数传连接到主机的指定地址,端口号
方法:
getInputStream();----》客户端输入流
getOutputStream();----》客户端输出流
close();----》关流
shutdownOutput();----》禁用此客户端的输出流
使用:
TCP通信端的客户端向服务器发送请求连接,和服务器进行三次握手,建立逻辑关系
1,创建客户端Socket对象,封装服务器的IP,端口号
2,使用Socket对象.getOutputStream(); 获取网络字皆输出流OutputStream对象
3,使用字节输出流对象.write();给服务器发送数据
4,使用Socket对象.getInputStream();获取网络字节输入流InputStream对象
5,使用字节输入流对象.read();读取服务器返回的响应数据
6,释放资源
五,ServerSocket
概述:
这个类实现了服务器。 服务器等待通过网络进入的请求。 它根据该请求执行一些操作,然后可能将结果返回给请求者。
构造:
new ServerSocket(int port); 绑定一个指定端口号
方法:
accept();----》监听并接受到此服务器的连接请求,用于实现客户端通信,阻塞知道建立连接
使用:
服务端Server 接收客户端的请求,与客户端建立逻辑关系,并往客户端写回应数据
1,创建服务器ServerSocket对象,构造方法中绑定端口号
2,使用ServerSocket对象.accept(); 监听并获得客户端请求 Socket对象
3,使用Socket对象.getInputStream(); 获取InputStream对象
4,使用IS对象.read(); 读取客户端发送的请求数据
5,使用Socket对象.getOutputStream(); 获取OutputStream对象
6,使用OS对象.write(); 写回应数据
7,释放资源