网络编程

单例模式补充

 1 # 方式一
 2 class Singleton:
 3     __instance = None
 4 
 5     @classmethod
 6     def singleton(cls):
 7         if not cls.__instance:
 8             obj = cls()
 9             cls.__instance = obj
10         return cls.__instance
11 
12 
13 # 方式二
14 class Singleton:
15     __instance = None
16 
17     def __new__(cls, *args, **kwargs):
18         if not cls.__instance:
19             cls.__instance = object.__new__(cls)
20         return cls.__instance
21 
22 
23 obj1 = Singleton()
24 obj2 = Singleton()
25 obj3 = Singleton()
26 print(obj1)
27 print(obj2)
28 print(obj3)

一、软件开发架构

1.C/S 架构

Client(客户端)— Server(服务端)

程序需要安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大

优点:

  软件使用稳定;节省网络资源

缺点:

  安装麻烦,用户体验差;软件的每次更新,用户都需要重新下载或更新版本

2.B/S架构

Browser(浏览器,本质是也是一个客户端)— Server(服务端)

只需要在浏览器上通过HTTP请求服务服务器端相关的资源(网页资源),客户端浏览器就能进行增删改查

优点:

  软件的使用方便;无需跟着软件的更新去下载

缺点:

  如果网络不稳定,软件的使用就不稳定

ps:目前比较流行的架构是B/S架构,因为其用户体验高

  客户端与服务端:

    服务端就是24小时不断提供服务

    客户端就是想要找服务时,就去访问服务端

二、互联网协议(OSI七层协议)

协议是计算机与计算机之间沟通的介质

 1.物理层:

物理链接介质,传递电信号

2.数据链路层

  我要知道数据是什么?数据是给谁的?

基于以太网的通信方式(以太网协议):

⑴规定一套分组的方式:获取电信号真实数据,电信号是一个数据包

  head:18个字节(6个表示发送者-6个表示接受者-6个表示数据类型)

  data:电信号具体的数据

⑵网卡:电脑插入网线的地方

每块网卡都有一串世界上独一无二的数字,是12位的16进制数字,称为“mac地址”(前6位:产商号-后6位:流水号)

mac地址作用:标识全世界上一台独一无二的计算机

以太网工作方式:单播和广播

缺点:广播风暴;只能在局域网内实现通信,无法跨局域实现通信

 小结:mac地址:标识全世界上一台独一无二的计算机

3.网络层

实现全世界某一台计算机之间的通信

基于IP地址的通信方式(ip协议):

由点分十进制的数字组成,最小范围:0.0.0.0,最大范围255.255.255.255

ip版本:IPV4、IPV6

ip的作用:

  用于表示全世界某一台计算机的位置,局域网的位置

小结:IP地址+mac地址:标识全世界某一个局域网内的,某一台计算机

4.传输层

主要是软件与软件之间进行通信

基于tcp/udp的通信方式(tcp/udp协议):

tcp与udp都是基于端口实现通信的

port端口:用于标识计算机中某个独一无二的软件

小结:IP地址+mac地址+port端口:标识全世界某一个局域网内某一台计算机上的某一个软件

5.应用层

由自定义协议(http,ftp)

原文地址:https://www.cnblogs.com/hexianshen/p/11983069.html