网络编程
import json
from datetime import datetime,date
不能直接序列化 因为字典里面不全是字符串
res = {'c1':datetime.today(),'c2':date.today()}
print(json.dumps(res))
res = {'c1':str(datetime.today()),'c2':str(date.today())} # 手动转成子符传
print(json.dumps(res)) # {"c1": "2019-08-06 20:57:04.649601", "c2": "2019-08-06"}
NX 方法
json.JSONEncoder
class MyJson(json.JSONEncoder):
def default(self, o):
if isinstance(o,datetime):
return o.strftime('%Y-%m-%d %X')
elif isinstance(o,date):
return o.strftime('%Y-%m-%d')
else:
return super().default(self,o)
res = {'c1':datetime.today(),'c2':date.today()}
print(json.dumps(res,cls=MyJson))
网络编程
软件开发架构
c/s架构
c:客户端 clienf
s:服务端 srever
b/s结构
b:浏览器 browser
s:服务器 server
ps bs结构本质也是cs结构
手机端看上去cs结构比较火,实际上bs已经在崛起
微信支付宝都在做一件事 : 统一接口
手机端之后肯定也是bs比较火
服务端: 24小时不间断提供服务
客户端:什么时候想体验服务,就去找心仪的服务端去寻求服务
学习网络编程 就可以开发一个cs架构的软件
并发 数据 前端 django 就可以开发一个bs架构的软件
网络编程的发展史
任何先进的技术最早都来源于军事
回到过去
1 早期的电话 电话线 和中介
2 大屁股电脑 网线
3 笔记本电脑 无线电话 网卡
要想实现远程通信第一个需要具备的条件是: 物理连接介质
人要想实现无障碍交流必须说统一的语言 >>>>> 就出现了统一的语言 英语
计算机之间要想实现远程通信 除了有物理介质之外还需要有一套公共的标准/协议
OSI协议
OSI七层协议
应用层
表示层
会话层
传输层
网络层
数据链路控制
物理连接层
OSI五层协议
应用层
传输层
网络层
数据链路层
物理连接层
-
物理连接层
基于电型号传输01010101010二进制数据 -
数据链路层
- 规定了电信号的分组方式
- 规定了任何一台接入互联网的计算机都必须有一块网卡
每一块网卡上面都刻有世界上独一无二的编号
编号 规则 12位16进制数
前6位是厂商编号
后六位是流水线编号
我们管这12位数叫mac地址(类似于我们的身份证号)
ps 以上两点合称为"以太网协议"
交换机
基于以太网协议通信
不能跨局域网通信互联网室友N多个局域网彼此之间连接而成的
-
网络层
-
IP协议
-
规定了只要是介入互联网的计算机都比西有一个IP地址
-
IP地址特点:点分十进制
-
ip地址最小 0.0.0.0
ip地址最大 255.255.255.255
-
IP地址目前有两个版本 IPV4 IPV6(由于IPV4已经不够表示目前存在的计算机了 所以推出了IPV6)
-
ip地址是动态分配的
路由器 实现局域网之间的互联
-
-
传输层
-
TCP\UDP协议 都是基于端口工作的协议
-
端口(port)
-
端口 作用 同来唯一标识一台计算机上的某个应用程序
-
端口号范围 0 - 65535
-
注意 通常 0-1024 都是操作系统默认使用的端口号
-
建议 使用8000之后的端口
-
常用软件 端口号
MySQL默认端口 3306
Redis默认端口 6379
django默认端口 8000
flask默认端口 5000
-
一台机器的端口号是动态分配的
第一次使用QQ分配到的端口号 是8989 将QQ关闭关闭再启动端口号可能就变了
-
-
-
-
计算机之间的通信其实就是计算机上的应用程序之间的通信
-
总结
-
ip地址 用来唯一标识介入互联网的一台计算机
-
port端口 用来唯一标识一台计算机上的应用程序
-
ip + port 唯一表示接入互联网一台计算机上的某个应用程序
-
-
-
应用层
-
HTTP协议
-
FTP协议
-
TCP协议
流式协议 可靠协议
基于TCP协议通信 必选先建立双向通道
TCP协议传输数据之所以可靠的原因就在于有双向通道???? 不对的
对方说了东西后必须得到反馈 否则一段时间内会一直发 还不回复 他会默认认为你宕机了
- 三次握手 四次挥手
- 三次握手建连接
- 四次挥手断连接