博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
单线程并发的server端
阅读量:5162 次
发布时间:2019-06-13

本文共 928 字,大约阅读时间需要 3 分钟。

非阻塞I/O模型

  • 主要是服务器的启动
  • sk.setblocking(False)设置这个,当服务器没有连接或者接收不到消息时报BlockingIOError错误

    #server端  import socket  sk = socket.socket()  sk.bind(('127.0.0.1', 8080))  sk.listen()  sk.setblocking(False)   #设置服务器的accept, recv均为非阻塞  conn_l = [] #连接上的conn都会加入这个列表中  del_l = []  #断开的conn都会加入到这个列表中  while 1:      try:          conn, addr = sk.accept()              conn_l.append(conn)      except BlockingIOError:          try:              for conn in conn_l:                  ret = conn.recv(1024)                  if ret == b'':                      del_l.append(conn)                      continue                  else:                      print(ret)          except BlockingIOError:              pass          for conn in del_l:                  conn.close()              conn_l.remove(conn)          del_l.clear()  ——————————————————————————————————  #client 客户端  多个客户端同时启动连接服务进行测试

转载于:https://www.cnblogs.com/liliudong/p/9746286.html

你可能感兴趣的文章
基于FPGA实现的高速串行交换模块实现方法研究
查看>>
Java Scala获取所有注解的类信息
查看>>
delphi ,安装插件
查看>>
case when then的用法-leetcode交换工资
查看>>
11.28.cookie
查看>>
BeanShell简介
查看>>
python字符串操作
查看>>
不同程序语言的注释和变量要求
查看>>
语言基础(9):static, extern 和 inline
查看>>
ES5_03_Object扩展
查看>>
bzoj 2600: [Ioi2011]ricehub
查看>>
创建数据库,表
查看>>
工厂模式
查看>>
计算机网络基础知识
查看>>
C#里如何遍历枚举所有的项
查看>>
如何在键盘出现时滚动表格,以适应输入框的显示
查看>>
超级强大的鼠标手势工具
查看>>
常用Dockerfile举例
查看>>
jquery的ajax用法
查看>>
设计模式-策略模式(Strategy)
查看>>