python select實現非阻塞socket - liukeforever的专栏 - 博客频道 - CSDN.NET

python select實現非阻塞socket

分类: Python 2011-10-19 11:08 690人阅读 评论(4) 收藏 举报
[python] view plaincopyprint?
  1. #!/usr/bin/env python
  2. # -*- encoding: utf-8 -*-
  3. import socket
  4. import select
  5. host = ""
  6. port = 50000
  7. s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  8. s.bind((host,port))
  9. s.listen(5)
  10. print "begin..."
  11. while 1:
  12. infds,outfds,errfds = select.select([s,],[],[],5)
  13. # 如果infds状态改变,进行处理,否则不予理会
  14. if len(infds) != 0:
  15. clientsock,clientaddr = s.accept()
  16. infds_c,outfds_c,errfds_c = select.select([clientsock,],[],[],3)
  17. if len(infds_c) != 0:
  18. buf = clientsock.recv(8196)
  19. if len(buf) != 0:
  20. print (buf)
  21. clientsock.close()
  22. print "clientsock closed"
  23. print "no data coming"
#!/usr/bin/env python
# -*- encoding: utf-8 -*-import socket
import selecthost = ""
port = 50000
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(5)
print "begin..."
while 1: infds,outfds,errfds = select.select([s,],[],[],5) # 如果infds状态改变,进行处理,否则不予理会 if len(infds) != 0: clientsock,clientaddr = s.accept()infds_c,outfds_c,errfds_c = select.select([clientsock,],[],[],3)if len(infds_c) != 0: buf = clientsock.recv(8196) if len(buf) != 0: print (buf) clientsock.close()print "clientsock closed"print "no data coming"

在綱絡上看到的一篇文章, 介紹Python的socket非阻塞式

在原來的代碼基礎上改了一下,增加了一個select使用了兩個select,

第一個select充許多個client來connect,如果過了5秒還沒有client來connect顯示 "no data coming"

第二個select是如果client connect過來, 過了3秒還沒有發送message則直接close, 不會造成阻塞

python select實現非阻塞socket相关推荐

  1. 使用select+非阻塞socket写的网络数据转发程序 « Xiaoxia[PG]

    使用select+非阻塞socket写的网络数据转发程序 « Xiaoxia[PG] 使用select+非阻塞socket写的网络数据转发程序 « Xiaoxia[PG] 从实践之中,我又学到东西了! ...

  2. 非阻塞socket的连接

    引用自:http://blog.csdn.net/cccallen/article/details/6619994 连接套接字,阻塞的套接字超时时间很长无法接受,而是用非阻塞套接字时使用的方案也有多种 ...

  3. 深入理解阻塞socket和非阻塞socket

    什么是阻塞socket,什么是非阻塞socket.对于这个问题,我们要先弄清什么是阻塞/非阻塞.阻塞与非阻塞是对一个文件描述符指定的文件或设备的两种工作方式. 阻塞的意思是指,当试图对该文件描述符进行 ...

  4. linux 非阻塞 socket - Google 搜索

    linux 非阻塞 socket - Google 搜索 linux c实现超时.非阻塞socket的函数select - Yunlu Liu (刘云璐) sites.google.com/site/ ...

  5. 使用NIO实现异步非阻塞Socket tcp通信

    使用NIO实现异步非阻塞Socket tcp通信 一.BIO与NIO IO(BIO)和NIO区别:其本质就是阻塞和非阻塞的区别 阻塞概念:应用程序在获取网络数据的时候,如果网络传输数据很慢,就会一直等 ...

  6. linux socket 阻塞服务端 非阻塞客户端,linux下异步RPC的阶段性总结-非阻塞SOCKET客户端...

    尽可能使用非阻塞socket int flags, s; flags = fcntl (fd, F_GETFL, 0); if (flags == -1){ close(fd); return -1; ...

  7. socket编程 —— 非阻塞socket (转)---例子已上传至文件中

    在上一篇文章 <socket编程--一个简单的例子> http://blog.csdn.net/wind19/archive/2011/01/21/6156339.aspx 中写了一个简单 ...

  8. 设置非阻塞socket收发数据

    非阻塞式I/O包括非阻塞输入操作,非阻塞输出操作,非阻塞接收外来连接,非阻塞发起外出连接.包括的函数有:read, readv, recv, recvfrom, recvmsg, write, wri ...

  9. python中单线程异步非阻塞

    socket操作中产生阻塞的地方有:连接的时候,就是执行connect函数的时候,还有就是接受数据的时候产生阻塞,就是执行recv函数等待服务端返回数据的时候 非阻塞就是不等待的意思,执行setblo ...

最新文章

  1. 物联网技术与应用(第1-2课时)(cont.)
  2. Java培训教程:”==“和 equals 方法究竟有什么区别?
  3. 字符串 编码转换 ATL
  4. 2021年小红书美妆护肤品类行业洞察报告
  5. 2017.10.7 phi的反函数 失败总结
  6. werkzeug local
  7. linux 格式化 lvm2,LVM2
  8. [转载]Qt之模型/视图(实时更新数据)_vortex_新浪博客
  9. .net在当前日期的基础上加一天
  10. sleep方法和wait方法的区别?
  11. c语言love字符怎么打,love字母特殊符号
  12. 身份证地址码mysql插入脚本
  13. SVN中clean up的含义
  14. android view viewgroup 区别,Android笔记:View ViewGroup 对比
  15. SQL 完整的实体性—联系图
  16. ASP.NET编写一个简易网站
  17. php sphinx应用场景,Sphinx+Scws 搭建千万级准实时搜索应用场景详解
  18. MarkDown: 为字体添加颜色
  19. scrapy框架讲解
  20. python常见加密方法实现,DES,AES,RSA,MD5,国密。--更新中

热门文章

  1. java long 二进制输出格式_算法:java打印int类型的二进制格式
  2. android移植jdk,重装windows后移植jdk和Android Studio
  3. impala java api 操作_Impala实践之六:使用Rest Api
  4. android 设置超时时间,为android requestSingleUpdate设置超时
  5. 基金指数温度怎么算_壁挂炉采暖费怎么算?从两千到八百,内行人教你别再花冤枉钱...
  6. xgboost算法_xgboost算法过程推导
  7. python的抽象类详解_第7.19节 Python中的抽象类详解:abstractmethod、abc与真实子类...
  8. 给mysql 授权 命令_mysql中授权命令grant用法详解:
  9. VB:您知道 Mid$ 函量可以放在 '=' 的左方吗
  10. 中国团队屠榜:COCOMapillary挑战赛包揽全部冠军