zoukankan      html  css  js  c++  java
  • python select方法的使用

    服务端

     1 import socket
     2 import select   #同步io
     3 sock = socket.socket()
     4 sock.bind(("127.0.0.1",8000))
     5 sock.listen(5)
     6 sock.setblocking(False) #非阻塞链接(False)
     7 inputs = [sock,]
     8 while True:
     9        a, b, c = select.select(inputs, [], [])  #监控(sock连接以及收发内核态存储的数据)
    10     for obj in a:
    11         if obj == sock:
    12             conn, addr = obj.accept()
    13             inputs.append(conn)
    14             print(conn)
    15 
    16         else:
    17             while True:  # 通信循环,
    18                 #解决有多个client端同时连接,若其中一个捣蛋关闭己端连接,那么对端跟着被中断
    19                 try:
    20                     data = obj.recv(1024)
    21                     print(data.decode('utf-8'))
    22                     send_data = input(">>>")
    23                     if len(send_data) == 0: break
    24                     obj.send(send_data.encode('utf-8'))
    25 
    26                 except Exception as e:
    27                     break

      #select()的都是基于单线程的并发操作(非阻塞的socket连接)
        #select()方法接收并监控3个通信列表, 第一个是所有的输入的data,就是指外部发过来的数据,
        # 第2个是监控和接收所有要发出去的data(outgoing data),
        # 第3个监控错误信息,接下来我们需要创建2个列表来包含输入和输出信息来传给select().
        #监控客户端发来的连接跟 监听io的读写

    客户端

    1 import socket
    2 sock = socket.socket()
    3 sock.connect(("127.0.0.1",8000))
    4 while True:
    5     send_data = input(">>>")
    6     sock.send(send_data.encode('utf-8'))
    7     recv_data = sock.recv(1024)
    8     print(recv_data.decode('utf-8'))
  • 相关阅读:
    四则运算
    软工与我
    四则运算结对作业
    《构建之法》读第四、十七章收获
    2016012088四则运算
    构建之法第一、二、十六章
    我的软件工程之路
    小学四则运算结对项目报告【GUI】
    构建之法4,17章读书笔记
    2016012095+小学四则远算练习软件项目报告
  • 原文地址:https://www.cnblogs.com/hongyongshang/p/6836154.html
Copyright © 2011-2022 走看看