• python 笔记9


    1 异常处理
    try ... except
    增强程序的健壮性

    2 socket 编程异常性

    异常种类
    AttributeError 试图访问一个对象没有的树形,比如foo.x,但是foo没有属性x
    IOError 输入/输出异常;基本上是无法打开文件
    ImportError 无法引入模块或包;基本上是路径问题或名称错误
    IndentationError 语法错误(的子类) ;代码没有正确对齐
    IndexError 下标索引超出序列边界,比如当x只有三个元素,却试图访问x[5]
    KeyError 试图访问字典里不存在的键
    KeyboardInterrupt Ctrl+C被按下
    NameError 使用一个还未被赋予对象的变量
    SyntaxError Python代码非法,代码不能编译(个人认为这是语法错误,写错了)
    TypeError 传入对象类型与要求的不符合
    UnboundLocalError 试图访问一个还未被设置的局部变量,基本上是由于另有一个同名的全局变量,
    导致你以为正在访问它
    ValueError 传入一个调用者不期望的值,即使值的类型是正确的

    for i in 10:
    pass

    typeerror

    try ... else ,findally处理

    assert 断言 如果错误出现asserterror错误

    网络编程

    C/S B/S

    1 socket.AF_INET 网络套接字
    socket.SOCK_STREAM 流式协议
    2

    半连接池 phone.listen(5) 是请求数,可以排队请求的数量

    import socket

    def client():
    phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    phone.connect(("127.0.0.1", 8888))
    while True:
    cmd = input(">>:").strip()
    if len(cmd) == 0: continue
    phone.send(cmd.encode('utf-8'))
    print("client ==>")
    rece_data(phone)
    #data = phone.recv(1024)

       # print(data.decode("gbk"))
    

    def rece_data(phone):
    print("exit")
    data = phone.recv(1024)
    if len(data) != 0:
    print(data.decode("gbk"))
    print("oooo")
    rece_data(phone)
    else:
    pass

    client()

    import socket
    import subprocess
    import queue
    def server():
    phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    phone.bind(("127.0.0.1",8888))
    phone.listen(-1)
    conn,client_addr = phone.accept()
    print("hello")
    q = queue.Queue()
    while True:
    try:
    data = conn.recv(1024)
    if not data:break #针对linux系统的关闭连接
    cmd_handle(data,q)
    while not q.empty():
    conn.send(q.get())
    #conn.send(result)
    #conn.send(result1)
    except ConnectionAbortedError:
    ##当用户关闭连接后进入
    conn.close()
    break
    conn.close()
    phone.close()

    def cmd_handle(cmd,q):
    cmd = cmd.decode("utf-8")
    res = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE,stderr=subprocess.PIPE)

    print(res.stdout.read().decode('utf-8'))

    stdout = res.stdout.read()
    stderr = res.stderr.read()
    q.put(stdout)
    q.put(stderr)
    

    server()

  • 相关阅读:
    牛客网每日一练
    牛客网每日一练
    linux/nginx 安全增强 迎客
    ObjectiveC 对象复制 迎客
    在Xcode中搭建真机调试环境 迎客
    VirtualBox虚拟机Ubuntu找不到网卡的解决方法 迎客
    Xcode中创建和添加Libary 迎客
    做领导还是做自己? 迎客
    ObjcetiveC 归档 迎客
    ObjcetiveC 中 @property 介绍 迎客
  • 原文地址:https://www.cnblogs.com/liuqimin/p/9136341.html
Copyright © 2020-2023  润新知