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'))
  • 相关阅读:
    sql.srcipt
    sowmodaldialog
    4) 删除虚拟应用程序
    JavaScript读写Cookies
    第5章 脚本运行期库对象
    npm serve md 工具 [MD]
    cleanmark 清除格式 博客内容提取 [MD]
    Hex编码 十六进制编码
    Windows Server AppFabric(Codename:"Dublin&Velocity")介绍
    WF4设计器模型:编辑范围ModelEditingScope
  • 原文地址:https://www.cnblogs.com/hongyongshang/p/6836154.html
Copyright © 2011-2022 走看看