一. C\S架构(****) client server
软件C\S架构:客户端\服务端架构: 京东,淘宝,qq,微信
B\S架构: 浏览器(browser) \服务端>>>统一接口
硬件 C\S架构 : 打印机
(略过)
二. 网络通信整个流程(**)
网线: 传输电信号
集线器: 将所有连接到集线器的网络设备连通起来
交换机: 升级版的集线器
网卡: 接受电信号
网关: 把关的,公网IP地址
MAC地址物理地址: 8C-EC-4B-88-B9-C9 #前三位厂商编号, 后三位生产流水号,用来定义网络设备的位置.,由网卡决定
DNS服务器:域名解析,将域名解析成ip地址
NAT:网络地址转换, 将局域网的ip地址转换为公网的ip地址
单播:
广播:
广播风暴: 网络拥堵, 信息不安全
Ip 地址:
IPV4 地址:192.168.15.46 #4个点分十进制
作用: 划分广播域
192.168.15.46 #
IPV4: 192.168.15.0-192.168.15.255 #八位二进制 256 个电脑
IPV6 :
192.168.0.0-192.168.255.255
咋们的 ip 地址段 :
192.168.15.0 -- 192.168.15.255
DHCP:自动分配ip地址
Arp表: 保存着ip地址和mac 地址对应关系
Arp协议: 通过ip 地址获取 mac地址
子网掩码: 计算两个ip地址是否属于同一网段:
255.255.255.0
源 ip 地址: 192.168.15.46
11000000.10101000.00001111.00101110
11111111.11111111.11111111.00000000
11000000.10101000.00001111.00000000 #192.168.15.0
目标的ip:192.168.16.30 #192.168.16.0
路由器: 转发消息
路由协议: 计算路由转发消息的最优路劲
端口号: 0 -65535, 确定电脑上的应用程序
IP 地址+ 端口 = 确定某个电脑上的某个应用程序
三. 初始socket
服务端
1 #服务端
2 import socket
3
4 #实例化socket对象
5 server = socket.socket() #创建了一部手机
6
7 ip_port = ('192.168.15.46',8001) #买个电话卡
8
9 #绑定IP地址和端口
10 server.bind(ip_port) #插卡
11
12 #监听,
13 server.listen() #开机
14 #等待客户端连接
15 print(111111)
16 conn,addr = server.accept() #等别人的电话,阻塞
17
18 print(222222)
19 print(conn)
20 print(addr)
21 #发送消息
22 # conn.send(b'leihao') #必须是bytes类型的数据
23
24
25 server_msg = input('服务端说>>>>')
26
27 conn.send(server_msg.encode('utf-8')) #必须是bytes类型的数据
28
29 #接受消息
30 from_client_msg = conn.recv(1024) #1024,一次性能够接受的消息大小1024B
31
32 print('来自客户端的消息',from_client_msg)
33
34 conn.send(b'gun')
35 #挂电话,关闭通道
36 conn.close()
37 #关机,关闭socket
38 server.close()
客户端
1 #客户端
2 import socket
3 client = socket.socket() #
4 #服务端的ip地址和端口
5 server_ip_port = ('192.168.15.46',8001)
6 #连接服务端的应用程序
7 client.connect(server_ip_port)
8
9 print('ssss')
10 from_server_msg1 = client.recv(1024) #阻塞
11 print('mmmm')
12 print('服务端第一条消息:',from_server_msg1.decode('utf-8'))
13 client.send(b'yuema')
14
15 from_server_msg = client.recv(1024)
16
17 print('来自服务端的消息:',from_server_msg)
18 client.close()
加强版服务端
1 import socket 2 3 #实例化socket对象 4 server = socket.socket() #创建了一部手机 5 6 ip_port = ('192.168.15.46',8001) #买个电话卡 7 8 #绑定IP地址和端口 9 server.bind(ip_port) #插卡 10 11 #监听, 12 server.listen() #开机 13 #等待客户端连接 14 print(111111) 15 conn,addr = server.accept() #等别人的电话,阻塞 16 17 print(222222) 18 print(conn) 19 print(addr) 20 #发送消息 21 # conn.send(b'leihao') #必须是bytes类型的数据 22 23 while 1: 24 server_msg = input('王斌>>>>') 25 26 conn.send(server_msg.encode('utf-8')) #必须是bytes类型的数据 27 28 #接受消息 29 from_client_msg = conn.recv(1024) #1024,一次性能够接受的消息大小1024B 30 31 print('来自俊豪妹的消息',from_client_msg.decode('utf-8')) 32 33 # conn.send(b'gun') 34 #挂电话,关闭通道 35 conn.close() 36 #关机,关闭socket 37 server.close()
加强版客户端
1 import socket 2 client = socket.socket() # 3 #服务端的ip地址和端口 4 server_ip_port = ('192.168.15.46',8001) 5 #连接服务端的应用程序 6 client.connect(server_ip_port) 7 8 while 1: 9 from_server_msg1 = client.recv(1024) #阻塞 10 print('来自王斌消息:',from_server_msg1.decode('utf-8')) 11 client_msg = input('俊豪妹>>>') 12 client.send(client_msg.encode('utf-8')) 13 14 from_server_msg = client.recv(1024) 15 16 print('来自服务端的消息:',from_server_msg) 17 client.close()
转换时间戳服务端 客户端
1 import socket 2 import time 3 server = socket.socket() 4 5 server.bind(('192.168.15.82',8001)) 6 7 server.listen() 8 9 conn,addr = server.accept() 10 print('有人连接') 11 12 while 1: 13 from_client_msg = float(conn.recv(1024).decode('utf-8')) 14 print(from_client_msg) 15 s = time.gmtime(from_client_msg) 16 g = time.strftime('%Y-%m-%d %H:%M:%S',s) 17 conn.send(g.encode('utf-8')) 18 19 # from_client_msg = conn.recv(1024).decode('utf-8') 20 # if from_client_msg== '拜拜': 21 # break 22 # print(from_client_msg) 23 # conn.send(input('服务端说:').encode('utf-8')) 24 server.close() 25 conn.close()
1 import socket 2 import time 3 4 5 client = socket.socket() 6 7 client.connect(('192.168.15.82',8001)) 8 9 while 1 : 10 a = str(time.time()) 11 client.send(a.encode('utf-8')) 12 13 from_server_msg = client.recv(1024).decode('utf-8') 14 print(from_server_msg) 15 time.sleep(1) 16 # client.send(input('客户端说:').encode('utf-8')) 17 # from_server_msg = client.recv(1024).decode('utf-8') 18 # if from_server_msg == '拜拜': 19 # break 20 # print(from_server_msg) 21 client.close()