zoukankan      html  css  js  c++  java
  • day18 io多路复用

    day18
    今天学习内容:
     
    1. io多路复用--select
    在win下 : io多路复用就是使用底层的select去进行对io句柄的监控
    通过select 可以进行server 和client 的句柄进行监控,当发生读写时,可以动态去处理。
     
         example:
              
    #!/usr/bin/env python
    #-*- encoding:utf-8 -*-
     
    import select
    import socket
     
    sk = socket.socket()
    sk.bind(('127.0.0.1',9999))
    sk.listen()
     
    inp = [sk]
    inps = []
    oups = []
    msg_dict = {}
    inpp = []
    while True:
        #参数1 是监控socket句柄列表,一旦服务端/客户端句柄发生动作则处理
        #参数2 如果存在句柄,则会对句柄进行一个处理,譬如当读取到数据,则将客户端的链接添加到inps,在下一个循环中去处理接受到的数据
        #参数3 是当发生socket错误时,该参数接收到发生错误的句柄
        #参数4 指定io的一个循环等待时间,这里时最多1秒
        r,w,e = select.select(inp,inps,inp,1)
     
        for s in r:
            #如果是服务端接受链接则添加到inp的监听队列
            if s == sk:
                conn,address = s.accept()
                inp.append(conn)
                msg_dict[conn]=[]
            else:
                try:
                    msg_dict[s].append(str(s.recv(1024),encoding='utf-8'))
                    inps.append(s)
                except Exception as ex:
                    print(ex)
                    inp.remove(s)
     
        for s1 in w:
            print(msg_dict[s1][0])
            ret = msg_dict[s1][0]+'好'
            del msg_dict[s1][0]
            s1.sendall(bytes(ret,encoding='utf-8'))
            inps.remove(s1)
     
        for s2 in e:
            inp.remove(s2)
     
     
    1. 还有socketserver源码分析
    2. ftp作业讲解
  • 相关阅读:
    WannaMine4.0查杀方法
    kthrotlds(WatchDogs变种)查杀方法
    Powershell无文件挖矿查杀方法
    Myking&暗云III病毒查杀方法
    NAT ALG原理与应用
    Invoke-PSImage 使用简介
    Cobaltstrike 安装
    windows 创建、启动、删除、停止服务
    CobaltStrike 之 Attacks 菜单解析
    网络安全法(2016年11月7日发布 2017年6月1日起施行 主席令(第五十三号)公布)
  • 原文地址:https://www.cnblogs.com/zxcv-/p/7967532.html
Copyright © 2011-2022 走看看