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

  • 相关阅读:
    C# 6.0
    C# 4.0
    C# 5.0
    C# 3.0
    C# 2.0
    C# 1.0(2002)
    字典树Trie
    Hadoop——生态体系
    程序是怎样跑起来的
    Redis实战(十七)Redis各个版本新特性
  • 原文地址:https://www.cnblogs.com/lexus/p/2851642.html
Copyright © 2020-2023  润新知