使用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()
监听终端输入

相关文章:

  • 2022-12-23
  • 2021-09-14
  • 2021-10-22
  • 2021-05-10
  • 2022-02-04
  • 2022-12-23
  • 2022-02-19
  • 2022-12-23
猜你喜欢
  • 2021-11-04
  • 2022-12-23
  • 2021-12-29
  • 2022-12-23
  • 2021-07-30
  • 2022-02-26
  • 2022-02-21
相关资源
相似解决方案