软件架构
* C/S架构
* 概述:客户端/服务器架构,用户使用需要单独安装客户端
* 举例:QQ客户端/腾讯服务器后台
* 优点:
1. 数据有部分存储在客户端,对于服务器的开销相对较小
2. 由于安装了单独的客户端,所以可以有丰富的功能
* 缺点:
1. 客户端需要安装,不够便捷
2. 每次更新客户端都需要重新安装一次,维护成本相对较高
* B/S架构
* 概述:浏览器/服务器架构,用户只需要用浏览器就可以使用
* 举例:JD淘宝网站
* 优点:
1. 使用方便
2. 所有的数据都在服务器,不需要额外更新客户端,维护成本低
* 缺点:
1. 所有的数据都只能存在服务器端,对服务器的开销大
2. 由于没有单独的客户端,要在浏览器上完成交互,功能相对会弱一些
网络通信三要素:
网络通信三要素:
* IP地址:
* 概述:IP地址是计算机在某个网络环境中的唯一标识
1. IPv4:
1. 由32个二进制位转换成4个十进制
2. 每个十进制是一个字节,范围是0-255
3. 每个字节数据由点隔开
4. 举例:192.168.1.1
2. IPv6
1. 由128个二进制位转换成8个十六进制
2. 举例:ABCD:EF01:2345:6789:ABCD:EF01:2345:6789
* 端口号
* 概述:进程在计算机中的唯一标识
* 其实本质就是一组范围在0 - 65535的整数
* 注意:
1. 在一台计算机中进程的端口号不能重复
2. 大部分0-1023的端口都被系统占用了
* 协议
* UDP协议:
* 概述:不会和数据接收对象进行连接,发送数据就相当于发了广播,在的人就听到了,没在的人就没听到,没听到
也无所谓,不会再重新发送
* 优点:
1. 不需要连接,速度快
* 缺点:
1. 无连接,不安全,不保证数据传输的成功性
2. 有大小限制 64k以内
* TCP协议:
* 概述:连接的三次握手:
1. 客户端向服务器发送请求
2. 服务器向客户端响应
3. 客户端收到响应后确认服务器的响应。
* 优点:
1. 安全可靠
2. 大小没有限制
* 缺点:由于需要三次握手建立连接,效率低
TCP协议实现
* 客户端实现:Socket
1. 构造:Socket("IP地址",端口号)
* 注意:
* 当创建客户端对象的时候,会尝试与指定IP和端口号的服务器进行"三次握手"的连接,如果连接
失败会抛出异常
2. 成员方法:
1. public InputStream getInputStream() : 返回此套接字的输入流。
如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。
关闭生成的InputStream也将关闭相关的Socket。
2. public OutputStream getOutputStream() : 返回此套接字的输出流。
如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。
关闭生成的OutputStream也将关闭相关的Socket。
3. public void close() :关闭此套接字。
一旦一个socket被关闭,它不可再使用。
关闭此socket也将关闭相关的InputStream和OutputStream。
4. public void shutdownOutput() : 禁用此套接字的输出流。
任何先前写出的数据将被发送,随后终止输出流。
* 服务器实现:ServerSocket
* 客户端实现:Socket
1. 构造:Socket("IP地址",端口号)
* 注意:
* 当创建客户端对象的时候,会尝试与指定IP和端口号的服务器进行"三次握手"的连接,如果连接
失败会抛出异常
2. 成员方法:
1. public InputStream getInputStream() : 返回此套接字的输入流。
如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。
关闭生成的InputStream也将关闭相关的Socket。
2. public OutputStream getOutputStream() : 返回此套接字的输出流。
如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。
关闭生成的OutputStream也将关闭相关的Socket。
3. public void close() :关闭此套接字。
一旦一个socket被关闭,它不可再使用。
关闭此socket也将关闭相关的InputStream和OutputStream。
4. public void shutdownOutput() : 禁用此套接字的输出流。
任何先前写出的数据将被发送,随后终止输出流。
* 服务器实现:ServerSocket
* 客户端实现:Socket
1. 构造:Socket("IP地址",端口号)
* 注意:
* 当创建客户端对象的时候,会尝试与指定IP和端口号的服务器进行"三次握手"的连接,如果连接失败
会抛出异常
2. 成员方法:
1. public InputStream getInputStream() : 返回此套接字的输入流。
如果此Scoket具有相关联的通道,则生成的InputStream 的所有操作也关联该通道。
关闭生成的InputStream也将关闭相关的Socket。
2. public OutputStream getOutputStream() : 返回此套接字的输出流。
如果此Scoket具有相关联的通道,则生成的OutputStream 的所有操作也关联该通道。
关闭生成的OutputStream也将关闭相关的Socket。
3. public void close() :关闭此套接字。
一旦一个socket被关闭,它不可再使用。
关闭此socket也将关闭相关的InputStream和OutputStream。
4. public void shutdownOutput() : 禁用此套接字的输出流。
任何先前写出的数据将被发送,随后终止输出流。
* 服务器实现:ServerSocket
1. 构造:ServerSocket(端口号)
2. 成员方法:
1. public Socket accept() :侦听并接受连接,返回一个新的Socket对象,用于和客户端实现通信。该方
法会一直阻塞直到建立连接 |
|