使用socket模块可以实现程序之间的通信,但是server在同一时刻只能和一个客户端进行通信,如果要实现一个server端可以和多个客户端进行通信可以使用
1.多线程
2.多进程
3.select I/O多路复用
来实现服务器端和多个客户端进行通信,本文将会介绍使用select实现伪并发。
I/O多路复用指:通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。I/O多路复用的好处就在于单个process就可以同时处理多个网络连接的IO。它的基本原理就是select /epoll这个function会不断的轮询所负责的所有socket,当某个socket有数据到达了,就通知用户进程。
小试牛刀:利用select监听终端输入
#!/usr/bin/env python #-*- coding:utf-8 -*- import sys import select import time while True: readable,writeable,errable = select.select([sys.stdin,],[],[],5) print readable print type(readable) if sys.stdin in readable: print "you input: ",sys.stdin.readline()