socket 多连接

本文档为文档https://www.cnblogs.com/wodeboke-y/p/11241472.html

后续内容。

上一文档中的案例2给出了一个阻塞型socket server

下面为非阻塞型,关键点如下:

accept阻塞,使用thread解决

socket阻塞,使用setblocking解决

# coding=utf-8
# !/usr/bin/env python
'''

'''

from socket import *
from time import ctime
import threading
import time

HOST = ''
PORT = 2159
BUFSIZ = 1024
ADDR = (HOST, PORT)

tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
socks = []  # 放每个客户端的socket

def handle():
    while True:
        for s in socks:
            try:
                data =
s.recv(BUFSIZ)  # 到这里程序继续向下执行
           
except Exception as
e:
                continue
            if not
data:
                socks.remove(s)
                continue
           
s.send('[%s],%s' %
(ctime(), data))

t = threading.Thread(target=handle) 
# 子线程
if __name__ == '__main__':
    t.start()
    print(u'我在%s线程中 ' % threading.current_thread().name)  # 本身是主线程
   
print('waiting
for connecting...'
)
    while True:
        clientSock, addr =
tcpSerSock.accept()
        print('connected
from:'
, addr)
        clientSock.setblocking(0)
        socks.append(clientSock)

最新文章

  1. jQuery ui autocomplete 与easyUI冲突解决办法(重命名ui的autocomplete 和menu部分)
  2. C#二维数组
  3. 关于DButils的简单介绍
  4. 关于Android studio 相对 eclipse 优点
  5. transform属性
  6. 51nod1262 扔球
  7. 关于Collection'
  8. Delphi word编辑
  9. Android辅助功能原理与基本使用详解-AccessibilityService
  10. JFinal极速开发框架使用笔记(三) 分析Model和ActiveRecord
  11. JavaFX技术简要总结
  12. PHP使用自定义key实现对数据加密解密
  13. HashMap 源码阅读
  14. 深入学习IOZone【转】
  15. mysql 递归查找菜单节点的所有子节点
  16. 栈(stack)信息
  17. Python + Selenium操作一:截图详解
  18. etcd 集群运维实践
  19. [转]magento性能优化的教程(非常详细)
  20. MySQL锁分类

热门文章

  1. 图的bfs遍历模板(邻接矩阵存储和邻接表存储)
  2. SpringBoot整合mybatis使用pageHelper插件进行分页操作
  3. bugku 输入密码查看flag
  4. mybatis--多对多关联
  5. 动手实现CapsNet系列——1 概述
  6. ARM64架构下登录mysql出错:mysql: error while loading shared libraries: libncurses.so.5: cannot open shared object file:
  7. 深入delphi编程理解之消息(六)无窗口单元消息的创建、接受及dispatch模式编程
  8. Vue - 如何使用npm run build后的dist文件夹
  9. UITextField的内存泄漏问题
  10. denied: requested access to the resource is denied 解决办法