• python-day26(CS 网络通信流程)


    一. CS架构(****) client server

      软件CS架构:客户端服务端架构: 京东,淘宝,qq,微信

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

      硬件 CS架构 : 打印机

    (略过)

    二. 网络通信整个流程(**)

      网线: 传输电信号

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

      交换机: 升级版的集线器

      网卡: 接受电信号

      网关: 把关的,公网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()
    View Code

    客户端

     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

    加强版服务端

     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

    加强版客户端

     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

    转换时间戳服务端 客户端

     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
     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
  • 相关阅读:
    将.net core api 部署成windows服务
    根据2个经纬度点,计算这2个经纬度点之间的距离(通过经度纬度得到距离)
    .NET 基础知识 单文件部署和可执行文件 剪裁独立部署和可执行文件
    通过 InnoSetup 美化安装界面
    拼凑一个ABP VNext管理后台拼凑一个ABP VNext管理后台
    互联网软件的安装包界面设计Inno setup
    weinre  远程实时调试手机上的Web页面 JAVASCRIPT远程调试
    asp.net core web应用以服务的方式安装运行
    用 vue2 和 webpack 快速建构 NW.js 项目
    谷歌插件抓包 similarweb抓包
  • 原文地址:https://www.cnblogs.com/Thui/p/9996607.html
Copyright © 2020-2023  润新知