zoukankan      html  css  js  c++  java
  • socket + select 完成伪并发操作

     1 #!/usr/bin/env python
     2 # -*- coding: utf-8 -*-
     3 
     4 import socket
     5 #创建一个socket对象
     6 sk1 = socket.socket()
     7 #绑定ip和端口
     8 sk1.bind(('127.0.0.1', 8001))
     9 #监听
    10 sk1.listen()
    11 #定义一个字典存放客户端发送的信息
    12 message_dict = {}
    13 #inputs用于存放socket对象
    14 inputs = [sk1]
    15 #哪一个客户端发送信息就把哪一个客户端的存放进output
    16 output = []
    17 import select
    18 while True:
    19     r_list, w_list, e_list = select.select(inputs, output, inputs, 1)
    20     print('正在监听的socket%d' %len(inputs))
    21     print(r_list)
    22     for sk_or_conn in r_list:
    23         if sk_or_conn == sk1:
    24             conn, address = sk_or_conn.accept()
    25             inputs.append(conn)
    26             message_dict[conn] = []
    27         else:
    28             try:
    29                 data_bytes = sk_or_conn.recv(1024)
    30             except Exception as ex:
    31                 inputs.remove(sk_or_conn)
    32             else:
    33                 data_str = str(data_bytes, encoding='utf-8')
    34                 message_dict[sk_or_conn].append(data_str)
    35                 output.append(sk_or_conn)
    36     for conn in w_list:
    37         data_message = message_dict[sk_or_conn][0]
    38         del message_dict[sk_or_conn][0]
    39         conn.sendall(bytes(data_message + '',encoding='utf-8'))
    40         output.remove(conn)
    View Code
  • 相关阅读:
    通过ip找mac
    python开发总结
    iptables 通用语句
    运行pyqt4生成py文件增加代码
    re正则match、search、findall、finditer函数方法使用
    python list 字符串排序
    读取yaml文件小方法
    递归解析字典小方法
    assert 断言
    格式化字符串——初级% 和format
  • 原文地址:https://www.cnblogs.com/doupy/p/7359835.html
Copyright © 2011-2022 走看看