zoukankan      html  css  js  c++  java
  • python select實現非阻塞socket

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

    python select實現非阻塞socket

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

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

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

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

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

  • 相关阅读:
    hdu 1520
    poj 3468
    hdu 1698
    shell:实现linux服务器资源监控并发送告警邮件
    Tools:apache部署https服务
    自动化:客户端自动化工具比对
    python:爬虫获取淘宝/天猫的商品信息
    js:浏览器插件
    自动化:图像相似度比较,并标记不一样的地方
    Linux:常用命令【转载】
  • 原文地址:https://www.cnblogs.com/lexus/p/2851642.html
Copyright © 2011-2022 走看看