zoukankan      html  css  js  c++  java
  • io多路复用(二)

    服务端

     1 import socket
     2 sk1 = socket.socket()
     3 sk1.bind(('127.0.0.1',8001,))
     4 sk1.listen()
     5 
     6 inputs = [sk1,]
     7 import select
     8 while True:
     9     # [sk1,sk2,sk3]select内部自动监听sk1,sk2,sk3,三个对象,一旦某个句柄发生变化(accept())
    10     # 如果有链接sk1
    11     # r_list = [sk1,sk2]
    12     r_list,w_list,e_list = select.select(inputs,[],inputs,1)
    13     print('正在监听的socket对象%d' % len(inputs))
    14     print(r_list)
    15     for sk1_or_conn in r_list:
    16         # 每一个链接对象
    17         if sk1_or_conn ==sk1:
    18             # 表示有新用户链接
    19             conn,adress = sk1_or_conn.accept()
    20             inputs.append(conn)#添加客户端文件句柄到列表
    21         else:
    22             # 表示有老用户来链接
    23             try:
    24                 data_bytes = sk1_or_conn.recv(1024)
    25                 data_str = str(data_bytes,encoding='utf-8')
    26                 sk1_or_conn.sendall(bytes(data_str+'',encoding='utf-8'))
    27             except Exception as e:
    28                 inputs.remove(sk1_or_conn)

    客户端

    1 import socket
    2 obj = socket.socket()
    3 obj.connect(('127.0.0.1',8001,))
    4 while True:
    5     inp = input('请如入内容:')
    6     obj.sendall(bytes(inp,encoding='utf-8'))
    7     rec_bytes = obj.recv(1024)
    8     rec_str = str(rec_bytes,encoding='utf-8')
    9     print(rec_str)
  • 相关阅读:
    linux 安装python3
    phoenix 索引实践
    spark shuffle参数调优
    hbase 面试问题汇总
    sqlserver 自动初始化从节点数据
    hive sql 窗口函数
    数据仓库建模
    Spark DataFrame简介(二)
    list删除时java.util.ConcurrentModificationException
    mybatis中判断等于字符串的条件怎么写
  • 原文地址:https://www.cnblogs.com/Erick-L/p/6477209.html
Copyright © 2011-2022 走看看