• 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
  • 相关阅读:
    jdbc连接数据库
    UUID
    Oracle 查询
    JAVA开发工具eclipse中@author怎么改
    JAVA实现多线程入门
    JAVA编程中的类和对象
    为ubuntu操作系统增加root用户
    搭建Java环境JDK,和运行环境JRE
    安装Ubuntu14.04版本的操作系统
    Eclipse连接到My sql数据库之前操作
  • 原文地址:https://www.cnblogs.com/doupy/p/7359835.html
Copyright © 2020-2023  润新知