2014-04-29 6 views
5

Desidero una funzionalità per verificare se i dati sono in attesa nel socket da leggere prima di leggerli. Qualcosa del genere sarebbe utile:Verificare se i dati sono disponibili nei socket in python

if (data available) then read data 

else wait in blocking mode till data becomes available 

Come posso realizzare questo in Python

+0

Questo è ciò che la chiamata 'sistema select' fa per voi. https://docs.python.org/2.7/library/select.html – squiguy

+0

@squiguy puoi darmi un piccolo esempio? –

risposta

4
while 1: 
    socket_list = [sys.stdin, s] 
    # Get the list sockets which are readable 
    read_sockets, write_sockets, error_sockets = select.select(socket_list , [], []) 
    for sock in read_sockets: 
    #incoming message from remote server 
    if sock == s: 
     data = sock.recv(4096) 
     if not data : 
     print '\nDisconnected from server' 
     sys.exit() 
     else : 
     #print data 
     sys.stdout.write(data) 


    #user entered a message 
    else : 
    msg = sys.stdin.readline() 
    s.send(msg)