单进程非阻塞服务器
来源:互联网 发布:mac电子书导入kindle 编辑:程序博客网 时间:2024/06/07 02:55
进程的执行取决于调度算法,多个进程就是多个资源,进程是资源分配的单位,用多进程在客户端访问服务器中是很常见的应用。下面我们介绍一种单进程实现客户端访问服务器的方法,其基本思想就是虽然使用单线程但是不让程序产生阻塞,程序不断运行没有阻塞,看起来就像伪的多线程。
在windows中我们使用网络调试助手产生3个客户端同时访问Ubuntu中建立的服务器
在ubuntu中我们建立一个服务器端,代码如下:
# 单线程费堵塞服务器from socket import *serSocket = socket(AF_INET, SOCK_STREAM)serSocket.setblocking(False)localAddr = ('', 7788)serSocket.bind(localAddr)serSocket.listen(10)# 用来保存所有已经连接的客户端的信息clientAddrList = []while True: try: clientSocket, clientAddr = serSocket.accept() except: pass else: print('一个新的客户端到来:%s' % (clientAddr)) clientSocket.setblocking(False) clientAddrList.append((clientSocket, clientAddr)) for clientSocket, clientAddr in clientAddrList: try: recvData = clientSocket.recv(1024) except: pass else: if len(recvData) > 0: print('%s,%s' % (str(clientAddr), recvData)) else: clientSocket.close() clientAddrList.remove((clientSocket, clientAddr)) print('%s 已经下线' % (str(clientAddr)))这里最主要的就是使用了
clientSocket.setblocking(False)将Socket设为非堵塞状态
最终结果是:
阅读全文
0 0
- 单进程非阻塞服务器
- python非阻塞式单进程服务器
- Linux下套接字详解(八)----select模式下服务器(非阻塞,单进程+多进程+多线程)
- 非阻塞服务器
- 服务器模型——从单线程阻塞到多线程非阻塞(上)
- 服务器模型——从单线程阻塞到多线程非阻塞(上)
- 单进程服务器-非堵塞模式(python版)
- 线程、进程、同步、异步、阻塞、非阻塞
- 非阻塞型通信进程
- python非阻塞启动进程
- 多线程非阻塞服务器设计
- python非阻塞服务器实现
- 非阻塞IO服务器模型
- 非阻塞socket服务器示例
- 网络编程第一篇:客户--服务器通信(非阻塞,多进程)
- 【Linux网络编程】基于TCP单进程版本阻塞式客户端/服务器
- 单线程非阻塞的NodeJS
- 单线程/阻塞/同步/多线程/非阻塞/异步 的比喻
- ArrayList、Vector和LinkedList的区别
- 在eclipse搭建python开发环境
- 四、ValueAnimator属性动画高级进阶(一)
- 使用Xshell远程访问linux
- BadUSB
- 单进程非阻塞服务器
- 堆 算法实现
- http消息状态码
- 移植QT5.6到嵌入式开发板(史上最详细的QT移植教程)
- 用java实现一个简单的学生管理系统
- python生成器
- AC自动机
- jsp中页码的实现
- thinkphp路由+伪静态+ index.php