python3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socket

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

客户端\服务端架构(哪里用到了网络通信)

客户端英文名称:Client(使用服务端的服务),服务端英文名称:Server(一直运行着,等待服务别人,不能有一天访问百度,百度页面打不开,不行吧。),

下面所说的C\S架构就是说的Client\Server架构。

    C\S架构(****) client server

    软件C\S架构:客户端\服务端架构:京东,淘宝,今日头条,qq,微信.....

    B\S架构:浏览器(browser)\服务端>>>统一接口

    硬件C\S架构: 打印机.

 

网络通信的整个流程

  网线:传输电信号

  集线器:将所有连接到集线器的网络设备连通起来

  交换机: 升级版的集线器

  网卡:接受电信号

  MAC地址:物理地址:   8C-EC-4B-88-B9-C9  #前三位厂商编号,后三位生产流水号

  单播:

  广播: 

  广播风暴:网络拥堵,信息不安全

  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

服务端

python3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socketpython3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socket
import socket

#实例化socket对象
server = socket.socket()  #创建了一部手机

ip_port = ('192.168.15.46',8001) #买个电话卡

#绑定IP地址和端口
server.bind(ip_port) #插卡

#监听,
server.listen()  #开机
#等待客户端连接
print(111111)
conn,addr = server.accept() #等别人的电话,阻塞
print(222222)

#发送消息
# conn.send(b'leihao') #必须是bytes类型的数据

server_msg = input('服务端说>>>>')

conn.send(server_msg.encode('utf-8')) #必须是bytes类型的数据

#接受消息
from_client_msg = conn.recv(1024) #1024,一次性能够接受的消息大小1024B

print('来自客户端的消息',from_client_msg)

conn.send(b'gun')
#挂电话,关闭通道
conn.close()
#关机,关闭socket
server.close()
View Code

客户端

python3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socketpython3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socket
import socket
client = socket.socket()  #
#服务端的ip地址和端口
server_ip_port = ('192.168.15.46',8001)
#连接服务端的应用程序
client.connect(server_ip_port)

print('ssss')
from_server_msg1 = client.recv(1024)  #阻塞
print('mmmm')
print('服务端第一条消息:',from_server_msg1.decode('utf-8'))
client.send(b'yuema')

from_server_msg = client.recv(1024)

print('来自服务端的消息:',from_server_msg)
client.close()
View Code

加强服务端

python3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socketpython3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socket
import socket

#实例化socket对象
server = socket.socket()  #创建了一部手机

ip_port = ('192.168.15.46',8001) #买个电话卡

#绑定IP地址和端口
server.bind(ip_port) #插卡

#监听,
server.listen()  #开机
#等待客户端连接
print(111111)
conn,addr = server.accept() #等别人的电话,阻塞

print(222222)

#发送消息
# conn.send(b'leihao') #必须是bytes类型的数据

while 1:
    server_msg = input('马云>>>>')

    conn.send(server_msg.encode('utf-8')) #必须是bytes类型的数据

    #接受消息
    from_client_msg = conn.recv(1024) #1024,一次性能够接受的消息大小1024B

    print('来自麻花藤的消息',from_client_msg.decode('utf-8'))

# conn.send(b'gun')
#挂电话,关闭通道
conn.close()
#关机,关闭socket
server.close()
View Code

加强客户端

python3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socketpython3.6入门到高阶(全栈) day026 CS架构 网络通信流程 socket
import socket
client = socket.socket()  #
#服务端的ip地址和端口
server_ip_port = ('192.168.15.46',8001)
#连接服务端的应用程序
client.connect(server_ip_port)

while 1:
    from_server_msg1 = client.recv(1024)  #阻塞
    print('来自马云消息:',from_server_msg1.decode('utf-8'))
    client_msg = input('麻花藤>>>')
    client.send(client_msg.encode('utf-8'))

from_server_msg = client.recv(1024)

print('来自服务端的消息:',from_server_msg)
client.close()
View Code