2014-04-29 16 views
5

Ich möchte eine Funktionalität, um zu überprüfen, ob Daten im Socket warten, vor dem Lesen gelesen werden. So etwas wie dies wäre hilfreich:Überprüfen Sie, ob Daten in Sockets in Python verfügbar sind

if (data available) then read data 

else wait in blocking mode till data becomes available 

Wie kann ich dies in Python erreichen

+0

Dies ist, was das 'select' Systemaufruf für Sie tut. https://docs.python.org/2.7/library/select.html – squiguy

+0

@squiguy können Sie mir ein kleines Beispiel geben? –

Antwort

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) 
Verwandte Themen