python-day26(C\S 网络通信流程)

时间:2022-08-14 23:58:32

一. 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 地址+ 端口 = 确定某个电脑上的某个应用程序

python-day26(C\S 网络通信流程)

 

 

 

 

三. 初始socket

服务端

python-day26(C\S 网络通信流程)python-day26(C\S 网络通信流程)
 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()
View Code

客户端

python-day26(C\S 网络通信流程)python-day26(C\S 网络通信流程)
 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()
View Code

加强版服务端

python-day26(C\S 网络通信流程)python-day26(C\S 网络通信流程)
 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()
View Code

加强版客户端

python-day26(C\S 网络通信流程)python-day26(C\S 网络通信流程)
 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()
View Code

转换时间戳服务端 客户端

python-day26(C\S 网络通信流程)python-day26(C\S 网络通信流程)
 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()
View Code
python-day26(C\S 网络通信流程)python-day26(C\S 网络通信流程)
 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()
View Code