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, 不會造成阻塞

  • 相关阅读:
    Subversion 1.5.5 与 Apache 2.2 结合
    IE6 式样表 Bug
    Dreamweaver 禁止自动换行
    错误:Internet Explorer cannot open the Internet site
    Html Agility Pack – XPath 基本语法
    不要安装 CodeSmith 5.2
    控件包含代码块,因此无法修改控件集合
    单例模式
    第一篇博文
    包与导入的概念
  • 原文地址:https://www.cnblogs.com/lexus/p/2851642.html
Copyright © 2011-2022 走看看