zoukankan      html  css  js  c++  java
  • 34、异常以及网络编程

    一、异常

    1.1、什么是异常

      异常是程序运行时,发生错误,产生的信号,会抛出异常,程序运行终止

    1.2、异常处理的三个特征

      1.异常的追踪信号

      2.异常的类型

      3.异常的内容
    1.3、为什么要处理异常

      为了增强程序的健壮性,即使程序运行时出错了,也不会终止程序,而是捕捉异常。并且将错误信息记录到日志中

    1.4、怎么处理异常

      异常主要分成两种,分别是逻辑上的错误以及语法上的错误

    1.4.1、语法上的错误   SyntaxError

      通常pycharm在程序编写是会直接标注出来,必须在程序运行时就改正

    1.4.2、逻辑上的错误 

      逻辑上的错误又分为两种:

      1.错误发生的条件是可以预知的

      解决方案:可以用if来进行判断

    age=input('>>: ').strip() # 输入的只要不是数字就会出错
    if age.isdigit():
        age=int(age)
        if age > 18:
            print('猜大了')
        elif age < 18:
            print('猜大了')
        else:
            print('猜对了')
    else:
        print('必须输入数字')

      2.错误发生的条件是无法预知的

      解决方案:可以使用try,except加上(异常类型)以及finally进行处理 

      try:try内放置可能会出错的程序

      except:相当于if,进行判断,后面跟着异常类型 并且赋值给e

      异常类型主要运用到以下几种:

        1.IndexError:索引异常

        2.NameError:变量名异常

        3.KeyError:字典异常

        4.Exception:万能异常

      finally:不处理异常,不管是否有异常,都会执行程序,通常用来保存回收系统资源的代码

    注:except可以和else进行配合使用

      try可以和finally直接使用

    print('start...')
    
    try:
        print('1111111111')
        l = ['aaa', 'bbbb']
        l[3] # 抛出异常IndexError,该行代码同级别的后续代码不会运行
        print('2222222222')
        xxx
        print('33333333')
        dic = {'a': 1}
        dic['aaa']
    
    except (IndexError, NameError) as e:
        print('异常的信息: ', e)
    except KeyError as e:
       print('字典的key不存在: ', e)
    except Exception as e:  # 万能异常
        print('所有异常都可以匹配的到')
    
    finally: # 不处理异常,无论是否发生异常都会执行finally的子代码
        print('====》》》》》应该把被检测代码中回收系统资源的代码放到这里')
    
    print('end....')

    二、网络编程

    2.1、cs架构与bs架构

      客户端架构Browser:客户端软件,操作系统,计算机硬件

      服务端架构Server:服务端短剑,操作系统,计算机硬件

      客户端与服务端之间使用物理介质进行连接

    2.2、网络通信

      网络=物理链接介质+互联网通信协议

      通信:跨地域数据传输(网络存在的意义)

    2.3、osi七层协议

      七层协议又称为四层协议以及五层协议,区别在于使用者的使用部分,而我们通常使用的是五层协议

      协议=头部(头部包含着目标地址以及源地址)+数据部分

      头部相当于包裹外的箱子,和数据绑定在一起

    2.4、五层协议

      数据的封装,就是由应用层的数据开始加头之后,成为下一层的数据。

            最终到物理层的位置通过交换机传递给其他计算机

    2.4.1、物理层

      一组数据称之为:一位

      职责:以二进制的形式传递电信号,所以单纯的电信号毫无意义,必须要将其进行分组

    2.4.2、数据链路层

      一组数据称之为:一帧

      职责:Ethernet 以太网协议,但凡介入互联网的计算机必须至少要有一块网卡,每块网卡都有独一无二的地址,该地址称之为Mac地址

         所以,数据链路层里面的数据帧,使用的头(源地址以及目标地址)是Mac地址,数据则是网络层传递过来的内容

      功能:以太网协议的工作方式是广播,相当于在局域网里面传递消息,所有人均可见

    2.4.3、网络层

      一组数据称之为:一包

      职责:划分广播域,凡是需要接通到外部的广播域,一定需要一个网关帮内部的计算机转发包到公网

         网关与外界通信走的是路由协议

         所以,网络层里面的一包,使用的头(原地址以及目标地址)是IP地址,数据是传输层传送过来的内容

    2.4.3.1、ipv4地址

      一个合法的ipv4地址 = IP地址/子掩码地址

      IP地址和子掩码地址均为4个32位数字组成,通过装换成二进制的形式,使用AND算法,求他们两个的与值(都是1,则为1,否则为0),从而你判断是否是一个域里面

      所以IP协议的作用就是为每一台计算机分配IP地址,以及确定哪些地址在同一个子网内

    2.4.3.2、ARP协议

      ARP协议:地址解析协议,将IP地址解析成Mac地址

      计算机的底层通信是基于Ethernet,以太网协议的Mac地址通信,Mac地址是网卡地址,具有唯一性

      在事先知道对方计算机IP的前提下,我们可以判断IP地址是否相同:

      1.当IP地址相同时:

      ARP协议:

        目标IP(目标计算机)和源IP一致,源Mac已知目标Mac未知的情况下,发送端Mac会直接在局域网内发送

    FF:FF:FF:FF:FF:FF    源IP    目标IP    数据

        目标IP接收到信息将会返回一个Mac地址,就能直接发送了

      2.在IP地址不同时:

      ARP协议:

        目标协议(目标计算机)和源IP不一致,源Mac已知,目标Mac将会直接指向网关的Mac地址,由网关向公网发布IP地址,

    FF:FF:FF:FF:FF:FF    原IP地址    目标IP地址       数据

        待目标IP地址返回Mac,在继续发送

    所以说:ip地址+mac地址=》标识全世界范围内独一无二的一台计算机,

    或者说:ip地址=》标识全世界范围内独一无二的一台计算机

      

      

  • 相关阅读:
    运算符
    数据运算
    login_code
    headless&unittest
    dict-test
    list_test
    string_test
    python1113
    堆排序
    java线程同步问题
  • 原文地址:https://www.cnblogs.com/jingpeng/p/12716412.html
Copyright © 2011-2022 走看看