zoukankan      html  css  js  c++  java
  • Python并发编程-IO模型-IO多路复用实现SocketServer

    • Server.py
    import select
    import socket
    
    sk = socket.socket()
    sk.bind(('127.0.0.1',8080))
    sk.setblocking(False)
    sk.listen()
    read_lst = [sk] #select监听谁就放入list
    while True: #[sk,conn]
        r_lst,w_lst,x_lsx = select.select(read_lst,[],[])
        # print('*******',r_lst)
        # print(sk)
        for i in r_lst:
            if i is sk:
                conn,addr = i.accept()
                # print(conn)
                read_lst.append(conn)
            else:
                ret = i.recv(1024)
                if ret == b'':
                    i.close()
                    read_lst.remove(i)
                    continue
                print(ret)
                i.send(b'goodbye')
    
    • client.py
    import socket
    import time
    import threading
    def func():
        sk = socket.socket()
        sk.connect(('127.0.0.1',8080))
        sk.send(b'hello')
        time.sleep(1)
        print(sk.recv(1024))
        sk.close()
    
    for i in range(20):
        threading.Thread(target=func).start()
    
  • 相关阅读:
    day02-数据库操作
    day01-MySQL介绍
    3-socketserver
    1-多线程与多进程
    keyword模块
    math模块
    查看进程pid与ppid
    开启进程的两种方式
    进程理论
    进程
  • 原文地址:https://www.cnblogs.com/konglinqingfeng/p/9718775.html
Copyright © 2011-2022 走看看