【基本知识点】
1、回顾:
(1)架构:C/S 客服端和服务器
B/S 浏览器和服务器 优点:统一的应用的接口
(2)通信:
同一台计算机两个py文件通信:打开一个文件
两台计算机之间通信:一根网线
多个计算机之间通信:交换机
【注】交换机的通信方式:①广播;②单播(一对一);③组播(一对多)
更多个计算机之间的通信:交换机+路由器
(3)mac地址:物理地址,全球唯一,类似于一个人的身份证。
(4)IP地址:逻辑地址,四位点十进制,类似于一个人的学号。
(5)端口:操作系统为本机上的应用程序随机分配的一个接口。(0~65535,0~1023不能用)
(6)网段:一个局域网内IP地址的范围
(7)子网掩码:用来计算网段。子网掩码&P地址=网段
(8)arp协议:通过目标IP地址获取目标mac地址的一个协议。
(9)OSI五层模型:
物理层:光纤,集线器,网线
数据链路层:交换机、网卡、网桥 arp协议
网络层:路由器,三层交换机 IP协议
传输层:四层交换机,四层路由器 UDP, TCP
应用层: http, https, ftp
(10)TCP协议的编码流程
服务器端: 客服端:
实例化对象 实例化对象
绑定IP地址和端口号
监听
接收客服端的连接 连接客服端
收发 收发
关闭 关闭
2、TCP协议完善编码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # *******************服务端**********************开始 2 import socket 3 4 sk = socket.socket()# 默认参数 使用基于网络类型的套接字,TCP协议 5 sk.bind(('127.0.0.1',65534))# 回环地址 6 sk.listen() 7 while 1: 8 conn,addr = sk.accept()# 接电话 9 10 while 1: 11 msg_r = conn.recv(1024).decode('utf-8') 12 print(msg_r) 13 if msg_r == 'q': 14 break 15 msg_s = input('>>>') 16 conn.send(msg_s.encode('utf-8')) 17 if msg_s == 'q': 18 break 19 20 conn.close() 21 sk.close() 22 # *******************服务端**********************结束 23 24 # *******************客服端**********************开始 25 import socket 26 27 sk = socket.socket() 28 sk.connect(('127.0.0.1',65534)) 29 while 1: 30 msg_s = input('>>>') 31 sk.send(msg_s.encode('utf-8')) 32 if msg_s == 'q': 33 break 34 msg_r = sk.recv(1024).decode('utf-8') 35 if msg_r == 'q': 36 break 37 print(msg_r) 38 39 sk.close() 40 # *******************客服端**********************结束
conn,addr = sk.recv()和conn.close()中的相关问题
(1)建立连接——三次握手
(2)断开链接——四次挥手
3、UDP协议+Pycharm输出带颜色
type = socket.SOCKET.DGRAM
优势:允许一个服务器同时和多个客服端通信
PyCharm输出带颜色: 33[32m CODE 33[0m ——输出不带背景色 33[32;41m CODE 33[0m——带背景色
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 # *******************服务端**********************开始 2 import socket 3 4 sk = socket.socket(type=socket.SOCK_DGRAM)# udp协议 5 sk.bind(('127.0.0.1',8090)) 6 # 需求: 根据每个客户端的名字,去加上颜色 7 dic = {'alex':'