python单线程下实现多个socket并发过程详解-创新互联

先看服务端的代码

创新互联专注于嵩县网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供嵩县营销型网站建设,嵩县网站制作、嵩县网页设计、嵩县网站官网定制、小程序制作服务,打造嵩县网络公司原创品牌,更为您提供嵩县网站排名全网营销落地服务。
import sys
# import socket
import time
import gevent
from gevent import socket
from gevent import monkey
monkey.patch_all()
#类似于python中的黑魔法,把很多模块的阻塞的变成非阻塞的,比如socket中的rece和send都变
# 为不阻塞了
 
 
def server(port):
  s = socket.socket()
  s.bind(("127.0.0.1",port))
  s.listen(2000)
  while True:
    cli,add = s.accept()
    gevent.spawn(handle_request,cli)
    #通过gevent的启动一个协程,把客户端的socket对象传进去
def handle_request(s):
  try:
    while True:
      data = s.recv(1024)
      print("收到的信息:",str(data,encoding="utf-8"))
      s.send(data)
      if not data:
        s.shutdown(socket.SHUT_WR)
        #把和客户端这个链接销毁
  except Exception as ex:
    print(ex)
  finally:
    s.close()
 
if __name__ == '__main__':
  server(8000)

名称栏目:python单线程下实现多个socket并发过程详解-创新互联
当前路径:http://scyanting.com/article/dsogij.html