• doraemon的python tcp协议和udp协议


    ### 8.9 tcp协议和udp协议
    
    #### 8.9.1 tcp协议 -------打电话
    
    特点:
    
    - ​    可靠 慢 全双工通信
    - ​    建立连接的时候:三次握手
    - ​    断开连接的时候:四次挥手
    - ​    长连接:会一直占用双方的端口
    - ​    能够传递的数据长度几乎没有限制
    
    在建立连接之后:
    
    - 发送的每一条信息都有回执
    - 为了保证数据的完整,还有重传机制
    
    IO(input,output)操作,输入和输出的相对内存来说的
    
    - write send ------ output
    - read recv ----- input
    
    #### 8.9.2 udp协议  ------发短信
    
    特点:
    
    - 无连接的 速度快
    - 可能会丢消息
    - 能够传递的数据长度是有限的,是根据数据传递设备的设置有关系
    
    ### 8.9.3 应用场景
    
    TCP:文件的上传下载(发送邮件、网盘、缓存电影)
    
    UDP:即时通信(qq、微信、飞秋)
    
    ### 8.9.4 osi七层模型
    
    七层模型:
    
    - 应用层
    - 表示层
    - 会话层
    - 传输层
    - 网络层
    - 数据链路层
    - 物理层
    
    五层协议:
    
    - 应用层     python代码
    - 传输层     tcp/udp协议 端口
    - 网络层     ipv4/ipv6协议
    - 数据链路层   mac地址、arp协议
    - 物理层
    
    #### 8.9.5 socket(套接字)
    
    socket:
    
    - 同一台机器的两个服务之间的通信
    - 基于网络的多台机器之间的多个服务通信
    
    计算器:
    
    ```python
    import re
    from functools import reduce
    def exp_format(exp):
        exp = exp.replace('--','+')
        exp = exp.replace('+-','-')
        exp = exp.replace('++','+')
        exp = exp.replace('-+','-')
        return exp
    
    def mul_div(atom_exp):   # 最基础的两个数的加减乘除
        if '*' in atom_exp:
            a, b = atom_exp.split('*')
            res = float(a) * float(b)
        else:
            a, b = atom_exp.split('/')
            res = float(a) / float(b)
        return res
    
    def cal_muldiv(exp):    # 匹配乘除法 计算
        com = re.compile('d+(.d+)?[*/]-?d+(.d+)?')
        while True:
            obj = com.search(exp)
            if obj:
                atom_exp = obj.group()
                res = mul_div(atom_exp)
                exp = exp.replace(atom_exp,str(res))
            else:break
        return exp
    def cal_addsub(exp):   # 计算加减法
        ret = re.findall('[-+]?d+(?:.d+)?',exp)
        count = reduce(lambda x,y:float(x)+float(y),ret)
        return count
    
    # 算式的去空格
    exp = '2- -3*   -4/ -5*-3 -6'
    exp = exp.replace(' ','')
    sub_exp = cal_muldiv(exp)
    sub_exp = exp_format(sub_exp)
    ret = cal_addsub(sub_exp)
    print(ret)
    ```
  • 相关阅读:
    模拟打车
    atm转账
    python字符串,列表,字典,集合的常用方法
    while和for的简单使用
    数据库的基本命令
    jmeter监控linux的性能
    jmeter的错误解决Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YES))
    jmeter的正则参数化
    jmeter的参数化关联
    使用Python解析JSON
  • 原文地址:https://www.cnblogs.com/doraemon548542/p/11345201.html
Copyright © 2020-2023  润新知